Re: [PATCH] Clear up perlcritic 'missing return' warning
Mike Blackwell <maiku41@gmail.com>
From: Mike Blackwell <maiku41@gmail.com>
To: Michael Paquier <michael@paquier.xyz>
Cc: pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2018-05-22T20:35:10Z
Lists: pgsql-hackers
On Tue, May 22, 2018 at 3:32 AM, Michael Paquier <michael@paquier.xyz> wrote: > > <snip> And this > maps with any C code. > The important differences here are: *) Declaring a C function as void prevents returning a value. The intent not to return a value is clear to any caller and is enforced by the compiler. There is no equivalent protection in Perl. *) Falling off the end of a C function that returns a type other than void has undefined results. Perl will always return the value of the last statement executed. Because Perl does allow returning a value without explicitly using return, it's easy to write code that breaks if an unwary person adds a line to the end of the subroutine. There's a common constructor incantation that has this problem. It's a real gotcha for C programmers just starting to poke around in Perl code. This difference also allows users of .pm modules to abuse the API of a method intended to be "void", if the value returned falling off the end happens to seem useful, leading to breakage if the method's code changes in the future. > This is most likely going to be forgotten. > That's what perlcritic is for. :) Mike
Commits
-
Don't fall off the end of perl functions
- 3a7cc727c7c5 11.0 landed