Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Please warn when assigning from 'return' #13238

Closed
p5pRT opened this issue Sep 7, 2013 · 18 comments
Closed

Please warn when assigning from 'return' #13238

p5pRT opened this issue Sep 7, 2013 · 18 comments

Comments

@p5pRT
Copy link

p5pRT commented Sep 7, 2013

Migrated from rt.perl.org#119665 (status was 'rejected')

Searchable as RT119665$

@p5pRT
Copy link
Author

p5pRT commented Sep 7, 2013

From @jmdh

This is a bug report for perl from dom@​earth.li,
generated with the help of perlbug 1.39 running under perl 5.18.1.


Forwarded from <http​://bugs.debian.org/cgi-bin/bugreport.cgi?bug=512799>​:

"Hello, I spent significant amount of time today in debug to notice stupid line
like

'my $var = return myfunc($arg1, $arg2);',

when of course I meant

'my $var = myfunc($arg1, $arg2);'.

As assigning something a return is useless, Perl could generate a
warning there."

This still happens with perl 5.18.1​:

perl -e 'sub foo {}; sub bar { $foo = return foo() }'



Flags​:
  category=core
  severity=wishlist


Site configuration information for perl 5.18.1​:

Configured by Debian Project at Mon Aug 26 19​:34​:55 UTC 2013.

Summary of my perl5 (revision 5 version 18 subversion 1) configuration​:
 
  Platform​:
  osname=linux, osvers=3.2.0-4-686-pae, archname=i486-linux-gnu-thread-multi-64int
  uname='linux callisto 3.2.0-4-686-pae #1 smp debian 3.2.46-1 i686 gnulinux '
  config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN -D_FORTIFY_SOURCE=2 -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=i486-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.18 -Darchlib=/usr/lib/perl/5.18 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.18.1 -Dsitearch=/usr/local/lib/perl/5.18.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -Duseshrplib -Dlibperl=libperl.so.5.18.1 -des'
  hint=recommended, useposix=true, d_sigaction=define
  useithreads=define, usemultiplicity=define
  useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
  use64bitint=define, use64bitall=undef, uselongdouble=undef
  usemymalloc=n, bincompat5005=undef
  Compiler​:
  cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fstack-protector -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
  optimize='-O2 -g',
  cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fstack-protector -fno-strict-aliasing -pipe -I/usr/local/include'
  ccversion='', gccversion='4.8.1', gccosandvers=''
  intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=12345678
  d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
  ivtype='long long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
  alignbytes=4, prototype=define
  Linker and Libraries​:
  ld='cc', ldflags =' -fstack-protector -L/usr/local/lib'
  libpth=/usr/local/lib /lib/i386-linux-gnu /lib/../lib /usr/lib/i386-linux-gnu /usr/lib/../lib /lib /usr/lib
  libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt
  perllibs=-ldl -lm -lpthread -lc -lcrypt
  libc=, so=so, useshrplib=true, libperl=libperl.so.5.18.1
  gnulibc_version='2.17'
  Dynamic Linking​:
  dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
  cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib -fstack-protector'

Locally applied patches​:
  DEBPKG​:debian/cpan_definstalldirs - Provide a sensible INSTALLDIRS default for modules installed from CPAN.
  DEBPKG​:debian/db_file_ver - http​://bugs.debian.org/340047 Remove overly restrictive DB_File version check.
  DEBPKG​:debian/doc_info - Replace generic man(1) instructions with Debian-specific information.
  DEBPKG​:debian/enc2xs_inc - http​://bugs.debian.org/290336 Tweak enc2xs to follow symlinks and ignore missing @​INC directories.
  DEBPKG​:debian/errno_ver - http​://bugs.debian.org/343351 Remove Errno version check due to upgrade problems with long-running processes.
  DEBPKG​:debian/libperl_embed_doc - http​://bugs.debian.org/186778 Note that libperl-dev package is required for embedded linking
  DEBPKG​:fixes/respect_umask - Respect umask during installation
  DEBPKG​:debian/writable_site_dirs - Set umask approproately for site install directories
  DEBPKG​:debian/extutils_set_libperl_path - EU​:MM​: Set location of libperl.a to /usr/lib
  DEBPKG​:debian/no_packlist_perllocal - Don't install .packlist or perllocal.pod for perl or vendor
  DEBPKG​:debian/prefix_changes - Fiddle with *PREFIX and variables written to the makefile
  DEBPKG​:debian/fakeroot - Postpone LD_LIBRARY_PATH evaluation to the binary targets.
  DEBPKG​:debian/instmodsh_doc - Debian policy doesn't install .packlist files for core or vendor.
  DEBPKG​:debian/ld_run_path - Remove standard libs from LD_RUN_PATH as per Debian policy.
  DEBPKG​:debian/libnet_config_path - Set location of libnet.cfg to /etc/perl/Net as /usr may not be writable.
  DEBPKG​:debian/mod_paths - Tweak @​INC ordering for Debian
  DEBPKG​:debian/module_build_man_extensions - http​://bugs.debian.org/479460 Adjust Module​::Build manual page extensions for the Debian Perl policy
  DEBPKG​:debian/prune_libs - http​://bugs.debian.org/128355 Prune the list of libraries wanted to what we actually need.
  DEBPKG​:fixes/net_smtp_docs - [rt.cpan.org #36038] http​://bugs.debian.org/100195 Document the Net​::SMTP 'Port' option
  DEBPKG​:debian/perlivp - http​://bugs.debian.org/510895 Make perlivp skip include directories in /usr/local
  DEBPKG​:debian/cpanplus_definstalldirs - http​://bugs.debian.org/533707 Configure CPANPLUS to use the site directories by default.
  DEBPKG​:debian/cpanplus_config_path - Save local versions of CPANPLUS​::Config​::System into /etc/perl.
  DEBPKG​:debian/deprecate-with-apt - http​://bugs.debian.org/702096 Point users to Debian packages of deprecated core modules
  DEBPKG​:debian/squelch-locale-warnings - http​://bugs.debian.org/508764 Squelch locale warnings in Debian package maintainer scripts
  DEBPKG​:debian/skip-upstream-git-tests - Skip tests specific to the upstream Git repository
  DEBPKG​:debian/patchlevel - http​://bugs.debian.org/567489 List packaged patches for 5.18.1-2 in patchlevel.h
  DEBPKG​:debian/skip-kfreebsd-crash - http​://bugs.debian.org/628493 [perl #96272] Skip a crashing test case in t/op/threads.t on GNU/kFreeBSD
  DEBPKG​:fixes/document_makemaker_ccflags - http​://bugs.debian.org/628522 [rt.cpan.org #68613] Document that CCFLAGS should include $Config{ccflags}
  DEBPKG​:debian/find_html2text - http​://bugs.debian.org/640479 Configure CPAN​::Distribution with correct name of html2text
  DEBPKG​:debian/hurd_test_todo_syslog - http​://bugs.debian.org/650093 Disable failing GNU/Hurd tests in cpan/Sys-Syslog/t/syslog.t
  DEBPKG​:debian/hurd_test_skip_sigdispatch - http​://bugs.debian.org/650188 Disable failing GNU/Hurd tests op/sigdispatch.t
  DEBPKG​:debian/hurd_test_skip_stack - http​://bugs.debian.org/650175 Disable failing GNU/Hurd tests dist/threads/t/stack.t
  DEBPKG​:debian/hurd_test_skip_pipe - http​://bugs.debian.org/650187 Disable failing GNU/Hurd tests io/pipe.t
  DEBPKG​:debian/hurd_test_skip_io_pipe - http​://bugs.debian.org/650096 Disable failing GNU/Hurd tests dist/IO/t/io_pipe.t
  DEBPKG​:fixes/manpage_name_Test-Harness - http​://bugs.debian.org/650451 [rt.cpan.org #73399] cpan/Test-Harness​: add NAME headings in modules with POD
  DEBPKG​:debian/makemaker-pasthru - http​://bugs.debian.org/660195 [rt.cpan.org #28632] Make EU​::MM pass LD through to recursive Makefile.PL invocations
  DEBPKG​:debian/perl5db-x-terminal-emulator.patch - http​://bugs.debian.org/668490 Invoke x-terminal-emulator rather than xterm in perl5db.pl
  DEBPKG​:debian/cpan-missing-site-dirs - http​://bugs.debian.org/688842 Fix CPAN​::FirstTime defaults with nonexisting site dirs if a parent is writable
  DEBPKG​:debian/hurd_net_ping_disable_test - http​://bugs.debian.org/709385 Disable failing Net-Ping tests for GNU/Hurd
  DEBPKG​:fixes/memoize_storable_nstore - [rt.cpan.org #77790] http​://bugs.debian.org/587650 Memoize​::Storable​: respect 'nstore' option not respected
  DEBPKG​:fixes/net_ftp_failed_command - [rt.cpan.org #37700] http​://bugs.debian.org/491062 Net​::FTP​: cope gracefully with a failed command
  DEBPKG​:fixes/perlbug-patchlist - [3541c11] http​://bugs.debian.org/710842 [perl #118433] Make perlbug look up the list of local patches at run time
  DEBPKG​:fixes/regexp-preserve - http​://bugs.debian.org/718209 [perl #118213] [f4194b2] RT #118213​: handle $r=qr/.../; /$r/p properly
  DEBPKG​:fixes/regexp-preserve-testcases - http​://bugs.debian.org/718209 [perl #118213] [4d7b2f5] Disable new //p tests
  DEBPKG​:fixes/module_metadata_security_doc - [68cdd4b] CVE-2013-1437 documentation fix


@​INC for perl 5.18.1​:
  /etc/perl
  /usr/local/lib/perl/5.18.1
  /usr/local/share/perl/5.18.1
  /usr/lib/perl5
  /usr/share/perl5
  /usr/lib/perl/5.18
  /usr/share/perl/5.18
  /usr/local/lib/site_perl
  .


Environment for perl 5.18.1​:
  HOME=/home/dom
  LANG (unset)
  LANGUAGE (unset)
  LD_LIBRARY_PATH (unset)
  LOGDIR (unset)
  PATH=~/bin​:/usr/local/bin​:/usr/bin​:/bin​:/usr/local/games​:/usr/games
  PERL_BADLANG (unset)
  SHELL=/bin/bash

@p5pRT
Copy link
Author

p5pRT commented Sep 7, 2013

From @jkeenan

On Sat Sep 07 11​:31​:41 2013, dom wrote​:

This is a bug report for perl from dom@​earth.li,
generated with the help of perlbug 1.39 running under perl 5.18.1.

-----------------------------------------------------------------
Forwarded from <http​://bugs.debian.org/cgi-
bin/bugreport.cgi?bug=512799>​:

"Hello, I spent significant amount of time today in debug to notice
stupid line
like

'my $var = return myfunc($arg1, $arg2);',

when of course I meant

'my $var = myfunc($arg1, $arg2);'.

As assigning something a return is useless, Perl could generate a
warning there."

We could, but I don't think we should. This is the first time in 13
years of using Perl that I've ever heard of someone trying to use
'return' in the manner cited. Perhaps the documentation in 'perldoc -f
return' could use an example, but I see no need for a warning. In any
event, in the absence of a patch, I can't see taking any action on this.

This still happens with perl 5.18.1​:

perl -e 'sub foo {}; sub bar { $foo = return foo() }'
-----------------------------------------------------------------
---

Thank you very much.
Jim Keenan

@p5pRT
Copy link
Author

p5pRT commented Sep 7, 2013

The RT System itself - Status changed from 'new' to 'open'

@p5pRT
Copy link
Author

p5pRT commented Sep 8, 2013

From @cpansprout

On Sat Sep 07 14​:56​:39 2013, jkeenan wrote​:

On Sat Sep 07 11​:31​:41 2013, dom wrote​:

This is a bug report for perl from dom@​earth.li,
generated with the help of perlbug 1.39 running under perl 5.18.1.

-----------------------------------------------------------------
Forwarded from <http​://bugs.debian.org/cgi-
bin/bugreport.cgi?bug=512799>​:

"Hello, I spent significant amount of time today in debug to notice
stupid line
like

'my $var = return myfunc($arg1, $arg2);',

when of course I meant

'my $var = myfunc($arg1, $arg2);'.

As assigning something a return is useless, Perl could generate a
warning there."

We could, but I don't think we should. This is the first time in 13
years of using Perl that I've ever heard of someone trying to use
'return' in the manner cited. Perhaps the documentation in 'perldoc -f
return' could use an example, but I see no need for a warning. In any
event, in the absence of a patch, I can't see taking any action on this.

I agree. I’m rejecting this ticket.

--

Father Chrysostomos

@p5pRT
Copy link
Author

p5pRT commented Sep 8, 2013

@cpansprout - Status changed from 'open' to 'rejected'

@p5pRT
Copy link
Author

p5pRT commented Sep 9, 2013

From @wolfsage

On Sat, Sep 7, 2013 at 9​:46 PM, Father Chrysostomos via RT <
perlbug-followup@​perl.org> wrote​:

On Sat Sep 07 14​:56​:39 2013, jkeenan wrote​:

On Sat Sep 07 11​:31​:41 2013, dom wrote​:

This is a bug report for perl from dom@​earth.li,
generated with the help of perlbug 1.39 running under perl 5.18.1.

-----------------------------------------------------------------
Forwarded from <http​://bugs.debian.org/cgi-
bin/bugreport.cgi?bug=512799>​:

"Hello, I spent significant amount of time today in debug to notice
stupid line
like

'my $var = return myfunc($arg1, $arg2);',

when of course I meant

'my $var = myfunc($arg1, $arg2);'.

As assigning something a return is useless, Perl could generate a
warning there."

We could, but I don't think we should. This is the first time in 13
years of using Perl that I've ever heard of someone trying to use
'return' in the manner cited. Perhaps the documentation in 'perldoc -f
return' could use an example, but I see no need for a warning. In any
event, in the absence of a patch, I can't see taking any action on this.

I agree. I’m rejecting this ticket.

Is there any reason not to be helpful if we can, provided it doesn't add
significant overhead or make maintainability more complex?

I'd be willing to try to cut a patch for this.

Seems there are a few possible bugs in public code due to this​:

  http​://grep.cpan.me/?q=[%24%40%25].*+%3D+return\s

And even one in a dist shipped with perl5 itself​:

https://metacpan.org/source/RJBS/perl-5.18.0/cpan/CPAN/lib/CPAN/HTTP/Client.pm#L81

-- Matthew Horsfall (alh)

@p5pRT
Copy link
Author

p5pRT commented Sep 9, 2013

From @cpansprout

On Mon Sep 09 11​:27​:26 2013, alh wrote​:

On Sat, Sep 7, 2013 at 9​:46 PM, Father Chrysostomos via RT <
perlbug-followup@​perl.org> wrote​:

On Sat Sep 07 14​:56​:39 2013, jkeenan wrote​:

On Sat Sep 07 11​:31​:41 2013, dom wrote​:

This is a bug report for perl from dom@​earth.li,
generated with the help of perlbug 1.39 running under perl
5.18.1.

-----------------------------------------------------------------

Forwarded from <http​://bugs.debian.org/cgi-
bin/bugreport.cgi?bug=512799>​:

"Hello, I spent significant amount of time today in debug to
notice
stupid line
like

'my $var = return myfunc($arg1, $arg2);',

when of course I meant

'my $var = myfunc($arg1, $arg2);'.

As assigning something a return is useless, Perl could generate
a
warning there."

We could, but I don't think we should. This is the first time in
13
years of using Perl that I've ever heard of someone trying to use
'return' in the manner cited. Perhaps the documentation in
'perldoc -f
return' could use an example, but I see no need for a warning. In
any
event, in the absence of a patch, I can't see taking any action on
this.

I agree. I’m rejecting this ticket.

Is there any reason not to be helpful if we can, provided it doesn't
add
significant overhead or make maintainability more complex?

I'd be willing to try to cut a patch for this.

Seems there are a few possible bugs in public code due to this​:

http​://grep.cpan.me/?q=[%24%40%25].*+%3D+return\s

And even one in a dist shipped with perl5 itself​:

https://metacpan.org/source/RJBS/perl-
5.18.0/cpan/CPAN/lib/CPAN/HTTP/Client.pm#L81

Wow. I didn’t realise it was that common. If you want to write a
patch, that would be great.

(Just don’t warn for my $x = foo || return.)

--

Father Chrysostomos

@p5pRT
Copy link
Author

p5pRT commented Sep 9, 2013

@cpansprout - Status changed from 'rejected' to 'open'

@p5pRT
Copy link
Author

p5pRT commented Sep 9, 2013

From perl@profvince.com

On 09/09/2013 20​:26, Matthew Horsfall (alh) wrote​:

Is there any reason not to be helpful if we can, provided it doesn't
add significant overhead or make maintainability more complex?

I'd be willing to try to cut a patch for this.

Seems there are a few possible bugs in public code due to this​:

http​://grep.cpan.me/?q=[%24%40%25].*+%3D+return\s
<http​://grep.cpan.me/?q=[%24%40%25].*+%3D+return%5Cs>

Removing the optree tests, the comment matches and the non-perl5 code
from all of those 17 hits, I can count only 7 unique errors, out of
which 3 are harmless so couldn't possibly be caught by tests.

I believe the proper place for a warning that tries to catch such a rare
"typo" is the CPAN.

Vincent

@p5pRT
Copy link
Author

p5pRT commented Sep 9, 2013

From @wolfsage

On Mon, Sep 9, 2013 at 4​:30 PM, Vincent Pit <perl@​profvince.com> wrote​:

On 09/09/2013 20​:26, Matthew Horsfall (alh) wrote​:

Is there any reason not to be helpful if we can, provided it doesn't add
significant overhead or make maintainability more complex?

I'd be willing to try to cut a patch for this.

Seems there are a few possible bugs in public code due to this​:

http​://grep.cpan.me/?q=[%24%**40%25].*+%3D+return\s<http​://grep.cpan.me/?q=[%24%40%25].*+%3D+return%5Cs><
http​://grep.cpan.me/?q=[%24%**40%25].*+%3D+return%5Cs<http​://grep.cpan.me/?q=[%24%40%25].*+%3D+return%5Cs>

Removing the optree tests, the comment matches and the non-perl5 code from
all of those 17 hits, I can count only 7 unique errors, out of which 3 are
harmless so couldn't possibly be caught by tests.

I believe the proper place for a warning that tries to catch such a rare
"typo" is the CPAN.

It's valid syntax, but with "surprising" results. It seems like it should
either not be allowed or should provide useful feedback to the user.

I think it'd be great if any code that couldn't be reached threw a warning,
reducing the ease of which we can make errors.

-- Matthew Horsfall (alh)

@p5pRT
Copy link
Author

p5pRT commented Sep 12, 2013

From @ap

* Matthew Horsfall (alh) <wolfsage@​gmail.com> [2013-09-10 01​:45]​:

On Mon, Sep 9, 2013 at 4​:30 PM, Vincent Pit <perl@​profvince.com> wrote​:

Removing the optree tests, the comment matches and the non-perl5
code from all of those 17 hits, I can count only 7 unique errors,
out of which 3 are harmless so couldn't possibly be caught by tests.

I believe the proper place for a warning that tries to catch such
a rare "typo" is the CPAN.

It's valid syntax, but with "surprising" results. It seems like it
should either not be allowed or should provide useful feedback to the
user.

  my $arg = shift || return;

I think it'd be great if any code that couldn't be reached threw
a warning, reducing the ease of which we can make errors.

A generic dead code detector would be really useful. A special case for
just this issue is not at all.

--
Aristotle Pagaltzis // <http​://plasmasturm.org/>

@p5pRT
Copy link
Author

p5pRT commented Sep 12, 2013

From @wolfsage

On Thu, Sep 12, 2013 at 2​:36 AM, Aristotle Pagaltzis <pagaltzis@​gmx.de> wrote​:

I think it'd be great if any code that couldn't be reached threw
a warning, reducing the ease of which we can make errors.

A generic dead code detector would be really useful. A special case for
just this issue is not at all.

What are the complaints against something like this?

I don't understand why we wouldn't want to help people write less buggy Perl.

If there's obvious downsides to this that far outweigh the benefits,
I'd love to hear them.

Thanks,

-- Matthew Horsfall (alh)

@p5pRT
Copy link
Author

p5pRT commented Sep 12, 2013

From @xdg

On Thu, Sep 12, 2013 at 10​:56 AM, Matthew Horsfall (alh)
<wolfsage@​gmail.com> wrote​:

A generic dead code detector would be really useful. A special case for
just this issue is not at all.

The longest journey begins with a single step. :-)

More seriously, I think we have plenty of special case code to warn
about unusual things. Grep for "did you mean" in perldiag.

I see little harm in adding another. (Since I probably cut/paste my
way into the CPAN one.)

David

--
David Golden <xdg@​xdg.me>
Take back your inbox! → http​://www.bunchmail.com/
Twitter/IRC​: @​xdg

@p5pRT
Copy link
Author

p5pRT commented Sep 12, 2013

From @ikegami

On Thu, Sep 12, 2013 at 2​:24 PM, David Golden <xdg@​xdg.me> wrote​:

On Thu, Sep 12, 2013 at 10​:56 AM, Matthew Horsfall (alh)
<wolfsage@​gmail.com> wrote​:

A generic dead code detector would be really useful. A special case for
just this issue is not at all.

The longest journey begins with a single step. :-)

It's already been taken, actually.

$ perl -cwe'sub logerror {} exec("foo"); logerror(); die;'
Statement unlikely to be reached at -e line 1.
  (Maybe you meant system() when you said exec()?)
-e syntax OK

More seriously, I think we have plenty of special case code to warn
about unusual things. Grep for "did you mean" in perldiag.

I see little harm in adding another. (Since I probably cut/paste my
way into the CPAN one.)

@p5pRT
Copy link
Author

p5pRT commented Sep 13, 2013

From @ap

* Matthew Horsfall (alh) <wolfsage@​gmail.com> [2013-09-12 17​:00]​:

I don't understand why we wouldn't want to help people write less
buggy Perl.

We do want to help people write less buggy Perl. We also want to help
other people write perl less buggily.

Two options for the trigger​:

1. Very robust but very restricted, e.g. only for `return` immediately
  following assignment.

2. Generic but much more complex and probably reliant on heuristics,
  to be able to spot `$foo = 10 + $foo * return $x` or even more
  complex things, where the dead code isn’t dead obvious.

Triage​:

1. How many people is a warning for `my $foo = return 1` really going to
  help? Only a few lines of simple code (though in *everyone*’s perl) –
  but to help, what, 7 people total ever avoid a trivial mistake? Fine,
  it’s low cost – but for microscopic gain.

2. More realistically useful; also a lot more complex, with potential to
  remain buggy for a long time. And how many more people are we helping
  really? Plus any false-positive bugs and it would register a negative
  amount of helpfulness in addition to the positive amount.

I just don’t see a special-case check for this specific issue pulling
its weight. Frankly I’d be surprised if this thread hasn’t eaten up more
programmer time than the mistake that the proposed warning is about ever
will – so no further arguments from me either way.

Over and out,
--
Aristotle Pagaltzis // <http​://plasmasturm.org/>

@p5pRT
Copy link
Author

p5pRT commented Nov 17, 2013

From @jkeenan

On Thu Sep 12 20​:10​:55 2013, aristotle wrote​:

* Matthew Horsfall (alh) <wolfsage@​gmail.com> [2013-09-12 17​:00]​:

I don't understand why we wouldn't want to help people write less
buggy Perl.

We do want to help people write less buggy Perl. We also want to help
other people write perl less buggily.

Two options for the trigger​:

1. Very robust but very restricted, e.g. only for `return` immediately
following assignment.

2. Generic but much more complex and probably reliant on heuristics,
to be able to spot `$foo = 10 + $foo * return $x` or even more
complex things, where the dead code isn’t dead obvious.

Triage​:

1. How many people is a warning for `my $foo = return 1` really going to
help? Only a few lines of simple code (though in *everyone*’s perl) –
but to help, what, 7 people total ever avoid a trivial mistake? Fine,
it’s low cost – but for microscopic gain.

2. More realistically useful; also a lot more complex, with potential to
remain buggy for a long time. And how many more people are we helping
really? Plus any false-positive bugs and it would register a negative
amount of helpfulness in addition to the positive amount.

I just don’t see a special-case check for this specific issue pulling
its weight. Frankly I’d be surprised if this thread hasn’t eaten up more
programmer time than the mistake that the proposed warning is about ever
will – so no further arguments from me either way.

Over and out,

On the basis of Aristotle's analysis -- and on my own belief that there's only so much hand-holding we should be providing to our users -- I recommend that this feature request be rejected.

Thank you very much.
Jim Keenan

@p5pRT
Copy link
Author

p5pRT commented Nov 17, 2013

From @wolfsage

On Sat Nov 16 19​:13​:50 2013, jkeenan wrote​:

On the basis of Aristotle's analysis -- and on my own belief that
there's only so much hand-holding we should be providing to our users
-- I recommend that this feature request be rejected.

Done.

-- Matthew Horsfall (alh)

@p5pRT
Copy link
Author

p5pRT commented Nov 17, 2013

@wolfsage - Status changed from 'open' to 'rejected'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant