Skip Menu |
Report information
Id: 125330
Status: pending release
Priority: 0/
Queue: perl5

Owner: Nobody
Requestors: eda [at] waniasset.com
Cc:
AdminCc:

Operating System: Linux
PatchStatus: (no value)
Severity: low
Type: core
Perl Version: 5.10.1
Fixed In: (no value)



Date: Thu, 04 Jun 2015 19:10:46 +0100
From: "Ed Avis,,," <ed [...] babytree.fivehops.net>
To: perlbug [...] perl.org
CC: root [...] localhost
Subject: 'Masks earlier declaration' warning move from misc to syntax
Download (untitled) / with headers
text/plain 11.5k
This is a bug report for perl from eda@waniasset.com, generated with the help of perlbug 1.39 running under perl 5.10.1. ----------------------------------------------------------------- [Please describe your issue here] Perl has a compile-time warning "my" variable $x masks earlier declaration in same scope I had hoped this to be under the 'syntax' warning category, but it is under 'misc'. That gets in the way of making it a fatal warning. (In my opinion, fatal checks at compile time are a good thing, but the perils of fatal runtime warnings have often been discussed.) Thus: % perl -e 'use warnings FATAL => "syntax"; my $x; my $x' && echo yes yes % perl -e 'use warnings FATAL => "misc"; my $x; my $x' && echo yes "my" variable $x masks earlier declaration in same scope at -e line 1. Is it possible this warning could migrate from the 'misc' category to the 'syntax' category? If that is not possible, could 'misc' have a subdivision in the warnings category tree, so this one can go into 'misc_compile_time'? Then I could fatalize that category too. Or conceivably, a new top-level category 'compile_time' or 'static' could be created, with 'syntax' becoming a subcategory of that, and the 'masks earlier declaration' warning moving into the compile_time category. [Please do not change anything below this line] ----------------------------------------------------------------- --- Flags: category=core severity=low --- Site configuration information for perl 5.10.1: Configured by Debian Project at Wed Mar 6 15:31:28 UTC 2013. Summary of my perl5 (revision 5 version 10 subversion 1) configuration: Platform: osname=linux, osvers=3.2.0-4-amd64, archname=x86_64-linux-gnu-thread-multi uname='linux madeleine 3.2.0-4-amd64 #1 smp debian 3.2.39-2 x86_64 gnulinux ' config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN -Dcccdlflags=-fPIC -Darchname=x86_64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.10 -Darchlib=/usr/lib/perl/5.10 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.10.1 -Dsitearch=/usr/local/lib/perl/5.10.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -DDEBUGGING=-g -Doptimize=-O2 -Duseshrplib -Dlibperl=libperl.so.5.10.1 -Dd_dosuid -des' hint=recommended, useposix=true, d_sigaction=define useithreads=define, usemultiplicity=define useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef use64bitint=define, use64bitall=define, uselongdouble=undef usemymalloc=n, bincompat5005=undef Compiler: cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64', optimize='-O2 -g', cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include' ccversion='', gccversion='4.4.5', gccosandvers='' intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16 ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8 alignbytes=8, prototype=define Linker and Libraries: ld='cc', ldflags =' -fstack-protector -L/usr/local/lib' libpth=/usr/local/lib /lib /usr/lib /lib64 /usr/lib64 libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt perllibs=-ldl -lm -lpthread -lc -lcrypt libc=/lib/libc-2.11.3.so, so=so, useshrplib=true, libperl=libperl.so.5.10.1 gnulibc_version='2.11.3' Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E' cccdlflags='-fPIC', lddlflags='-shared -O2 -g -L/usr/local/lib -fstack-protector' Locally applied patches: DEBPKG:debian/arm_thread_stress_timeout - http://bugs.debian.org/501970 Raise the timeout of ext/threads/shared/t/stress.t to accommodate slower build hosts DEBPKG:debian/cpan_config_path - Set location of CPAN::Config to /etc/perl as /usr may not be writable. 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/extutils_hacks - Various debian-specific ExtUtils changes 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/m68k_thread_stress - http://bugs.debian.org/495826 Disable some threads tests on m68k for now due to missing TLS. 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/perl_synopsis - http://bugs.debian.org/278323 Rearrange perl.pod DEBPKG:debian/prune_libs - http://bugs.debian.org/128355 Prune the list of libraries wanted to what we actually need. DEBPKG:debian/use_gdbm - Explicitly link against -lgdbm_compat in ODBM_File/NDBM_File. DEBPKG:fixes/assorted_docs - http://bugs.debian.org/443733 [384f06a] Math::BigInt::CalcEmu documentation grammar fix DEBPKG:fixes/net_smtp_docs - http://bugs.debian.org/100195 [rt.cpan.org #36038] Document the Net::SMTP 'Port' option DEBPKG:fixes/processPL - http://bugs.debian.org/357264 [rt.cpan.org #17224] Always use PERLRUNINST when building perl modules. DEBPKG:debian/perlivp - http://bugs.debian.org/510895 Make perlivp skip include directories in /usr/local DEBPKG:fixes/pod2man-index-backslash - http://bugs.debian.org/521256 Escape backslashes in .IX entries DEBPKG:debian/disable-zlib-bundling - Disable zlib bundling in Compress::Raw::Zlib DEBPKG:fixes/kfreebsd_cppsymbols - http://bugs.debian.org/533098 [3b910a0] Add gcc predefined macros to $Config{cppsymbols} on GNU/kFreeBSD. 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:fixes/kfreebsd-filecopy-pipes - http://bugs.debian.org/537555 [16f708c] Fix File::Copy::copy with pipes on GNU/kFreeBSD DEBPKG:fixes/anon-tmpfile-dir - http://bugs.debian.org/528544 [perl #66452] Honor TMPDIR when open()ing an anonymous temporary file DEBPKG:fixes/abstract-sockets - http://bugs.debian.org/329291 [89904c0] Add support for Abstract namespace sockets. DEBPKG:fixes/hurd_cppsymbols - http://bugs.debian.org/544307 [eeb92b7] Add gcc predefined macros to $Config{cppsymbols} on GNU/Hurd. DEBPKG:fixes/autodie-flock - http://bugs.debian.org/543731 Allow for flock returning EAGAIN instead of EWOULDBLOCK on linux/parisc DEBPKG:fixes/archive-tar-instance-error - http://bugs.debian.org/539355 [rt.cpan.org #48879] Separate Archive::Tar instance error strings from each other DEBPKG:fixes/positive-gpos - http://bugs.debian.org/545234 [perl #69056] [c584a96] Fix \\G crash on first match DEBPKG:debian/devel-ppport-ia64-optim - http://bugs.debian.org/548943 Work around an ICE on ia64 DEBPKG:fixes/trie-logic-match - http://bugs.debian.org/552291 [perl #69973] [0abd0d7] Fix a DoS in Unicode processing [CVE-2009-3626] DEBPKG:fixes/hppa-thread-eagain - http://bugs.debian.org/554218 make the threads-shared test suite more robust, fixing failures on hppa DEBPKG:fixes/crash-on-undefined-destroy - http://bugs.debian.org/564074 [perl #71952] [1f15e67] Fix a NULL pointer dereference when looking for a DESTROY method DEBPKG:fixes/tainted-errno - http://bugs.debian.org/574129 [perl #61976] [be1cf43] fix an errno stringification bug in taint mode DEBPKG:fixes/safe-upgrade - http://bugs.debian.org/582978 Upgrade Safe.pm to 2.25, fixing CVE-2010-1974 DEBPKG:fixes/tell-crash - http://bugs.debian.org/578577 [f4817f3] Fix a tell() crash on bad arguments. DEBPKG:fixes/format-write-crash - http://bugs.debian.org/579537 [perl #22977] [421f30e] Fix a crash in format/write DEBPKG:fixes/arm-alignment - http://bugs.debian.org/289884 [f1c7503] Prevent gcc from optimizing the alignment test away on armel DEBPKG:fixes/fcgi-test - Fix a failure in CGI/t/fast.t when FCGI is installed DEBPKG:fixes/hurd-ccflags - http://bugs.debian.org/587901 Make hints/gnu.sh append to $ccflags rather than overriding them DEBPKG:debian/squelch-locale-warnings - http://bugs.debian.org/508764 Squelch locale warnings in Debian package maintainer scripts DEBPKG:fixes/lc-numeric-docs - http://bugs.debian.org/379329 [perl #78452] [903eb63] LC_NUMERIC documentation fixes DEBPKG:fixes/lc-numeric-sprintf - http://bugs.debian.org/601549 [perl #78632] [b3fd614] Fix sprintf not to ignore LC_NUMERIC with constants DEBPKG:fixes/concat-stack-corruption - http://bugs.debian.org/596105 [perl #78674] [e3393f5] Fix stack pointer corruption in pp_concat() with 'use encoding' DEBPKG:fixes/cgi-multiline-header - http://bugs.debian.org/606995 [CVE-2010-2761 CVE-2010-4410 CVE-2010-4411] CGI.pm MIME boundary and multiline header vulnerabilities DEBPKG:fixes/casing-taint-cve-2011-1487 - http://bugs.debian.org/622817 [perl #87336] fix unwanted taint laundering in lc(), uc() et al. DEBPKG:fixes/safe-reval-rdo-cve-2010-1447 - [PATCH] Wrap by default coderefs returned by rdo and reval DEBPKG:fixes/encode-heap-overflow - [PATCH] Fix decode_xs n-byte heap-overflow security bug in DEBPKG:fixes/digest_eval_hole - Close the eval \"require $module\" security hole in DEBPKG:fixes/unregister_signal_handler - [PATCH] main: Unregister signal handler before destroying my_perl DEBPKG:fixes/CVE-2012-5195 - avoid calling memset with a negative count DEBPKG:fixes/CVE-2012-5526 - [PATCH 1/4] CR escaping for P3P header DEBPKG:fixes/storable-security-warning - [PATCH] add a note about security concerns in Storable DEBPKG:fixes/maketext-code-execution - Fix misparsing of maketext strings. DEBPKG:fixes/CVE-2013-1667 - [PATCH] Prevent premature hsplit() calls, and only trigger REHASH DEBPKG:patchlevel - http://bugs.debian.org/567489 List packaged patches for 5.10.1-17squeeze5 in patchlevel.h --- @INC for perl 5.10.1: /home/ed/lib/perl/5.10.1 /home/ed/share/perl/5.10.1 /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl /usr/local/lib/perl/5.10.0 /usr/local/share/perl/5.10.0 . --- Environment for perl 5.10.1: HOME=/home/ed LANG=en_GB.UTF-8 LANGUAGE (unset) LC_ALL=en_GB.UTF-8 LD_LIBRARY_PATH=/home/ed/lib:/usr/local/lib LOGDIR (unset) PATH=/home/ed/bin:/bin:/usr/bin:/usr/local/bin:/usr/bin/X11:/usr/games:/sbin:/usr/sbin PERL5LIB=/home/ed/lib/perl/5.10.1:/home/ed/share/perl/5.10.1 PERL_BADLANG (unset) SHELL=/bin/bash
Date: Thu, 4 Jun 2015 21:27:40 +0100
Subject: Re: [perl #125330] 'Masks earlier declaration' warning move from misc to syntax
To: perl5-porters [...] perl.org
From: Zefram <zefram [...] fysh.org>
Download (untitled) / with headers
text/plain 333b
Ed Avis wrote: Show quoted text
> "my" variable $x masks earlier declaration in same scope > >I had hoped this to be under the 'syntax' warning category,
It's not a syntax issue. It's semantic. But your desire to distinguish it from other "misc" warnings is reasonable. It should probably have a category to itself, called "shadow". -zefram
To: perl5-porters [...] perl.org
From: Ed Avis <eda [...] waniasset.com>
Date: Fri, 5 Jun 2015 06:54:22 +0000 (UTC)
Subject: Re: [perl #125330] 'Masks earlier declaration' warning move from misc to syntax
Download (untitled) / with headers
text/plain 514b
Zefram <zefram <at> fysh.org> writes: Show quoted text
>> "my" variable $x masks earlier declaration in same scope >> >>I had hoped this to be under the 'syntax' warning category,
> >It's not a syntax issue. It's semantic. But your desire to distinguish >it from other "misc" warnings is reasonable. It should probably have >a category to itself, called "shadow".
That would help. But further, both 'shadow' and 'syntax' could move under a new top-level warnings category 'compile_time'. -- Ed Avis <eda@waniasset.com>
RT-Send-CC: perl5-porters [...] perl.org
Download (untitled) / with headers
text/plain 901b
On Thu Jun 04 23:56:06 2015, eda@waniasset.com wrote: Show quoted text
> Zefram <zefram <at> fysh.org> writes: >
> >> "my" variable $x masks earlier declaration in same scope > >> > >>I had hoped this to be under the 'syntax' warning category,
> > > >It's not a syntax issue. It's semantic. But your desire to distinguish > >it from other "misc" warnings is reasonable. It should probably have > >a category to itself, called "shadow".
> > That would help. But further, both 'shadow' and 'syntax' could move under > a new top-level warnings category 'compile_time'. >
There's been no further discussion in this RT in six months. That suggests to me that there's no compelling reason to revising the structure of our diagnostics. I'm taking the ticket for the purpose of closing it within 7 days unless there is a strong reason to keep it open. Thank you very much. -- James E Keenan (jkeenan@cpan.org)
RT-Send-CC: perl5-porters [...] perl.org
Download (untitled) / with headers
text/plain 114b
Is it possible to implement Zefram's suggestion? Show quoted text
>It should probably have a category to itself, called "shadow".
RT-Send-CC: perl5-porters [...] perl.org
Download (untitled) / with headers
text/plain 152b
The attached patch makes a new warnings category 'shadow' and moves three 'redefined' warnings from 'misc' to 'shadow'. Please could someone review it?
Subject: warnings_category_shadow.diff
Download warnings_category_shadow.diff
application/octet-stream 13.3k

Message body not shown because it is not plain text.

Subject: Re: [perl #125330] 'Masks earlier declaration' warning move from misc to syntax
To: Ed Avis via RT <perlbug-followup [...] perl.org>
CC: ;, perl5-porters [...] perl.org
Date: Mon, 14 Dec 2015 18:33:01 -0500
From: Ricardo Signes <perl.p5p [...] rjbs.manxome.org>
Download (untitled) / with headers
text/plain 655b
* Ed Avis via RT <perlbug-followup@perl.org> [2015-12-10T07:10:29] Show quoted text
> The attached patch makes a new warnings category 'shadow' and moves three > 'redefined' warnings from 'misc' to 'shadow'. Please could someone review > it?
My first pass of review: looked mostly good, but... Made me wonder, though: what's the purpose of warning on "our $x; our $x;"? Is the idea "you probably meant something other than $x for one of them? and since you'll read it elsewhere with a fully qualified name, you won't get a declaration error there, so we give you one here"? It's not really a shadowing, so I think the "shadow" category doesn't make sense. -- rjbs
Download signature.asc
application/pgp-signature 473b

Message body not shown because it is not plain text.

Date: Tue, 15 Dec 2015 01:39:43 +0000
Subject: Re: [perl #125330] 'Masks earlier declaration' warning move from misc to syntax
From: Zefram <zefram [...] fysh.org>
To: perl5-porters [...] perl.org
Download (untitled) / with headers
text/plain 476b
Ricardo Signes wrote: Show quoted text
>Made me wonder, though: what's the purpose of warning on "our $x; our $x;"?
... Show quoted text
>It's not really a shadowing, so I think the "shadow" category doesn't make >sense.
It *is* shadowing; it just happens that the two declarations have identical effect, so the shadowing doesn't make any difference. If a package declaration changed package between the two then they'd have different effect, and you'd presumably be happy calling that shadowing. -zefram
To: perl5-porters [...] perl.org
Subject: Re: [perl #125330] 'Masks earlier declaration' warning move from misc to syntax
From: Ed Avis <eda [...] waniasset.com>
Date: Tue, 15 Dec 2015 10:39:12 +0000 (UTC)
Download (untitled) / with headers
text/plain 223b
Do you want me to prepare a new patch that leaves 'our $x; our $x' in the 'misc' warnings category? If not, is there anything else you'd like to see fixed before the patch can be applied? -- Ed Avis <eda@waniasset.com>
Date: Thu, 17 Dec 2015 22:55:27 -0500
From: Ricardo Signes <perl.p5p [...] rjbs.manxome.org>
Subject: Re: [perl #125330] 'Masks earlier declaration' warning move from misc to syntax
To: Ed Avis <eda [...] waniasset.com>
CC: perl5-porters [...] perl.org
Download (untitled) / with headers
text/plain 339b
* Ed Avis <eda@waniasset.com> [2015-12-15T05:39:12] Show quoted text
> Do you want me to prepare a new patch that leaves 'our $x; our $x' in the > 'misc' warnings category? > > If not, is there anything else you'd like to see fixed before the patch > can be applied?
I don't see a problem with this commit. Any objections before it's applied? -- rjbs
Download signature.asc
application/pgp-signature 473b

Message body not shown because it is not plain text.

Download (untitled) / with headers
text/plain 133b
This bug has a patch waiting to be applied but I don't think it did get applied; could the current pumpking have another look please?
Subject: Re: [perl #125330] 'Masks earlier declaration' warning move from misc to syntax
From: Zefram <zefram [...] fysh.org>
To: perl5-porters [...] perl.org
Date: Wed, 6 Dec 2017 04:02:43 +0000
Download (untitled) / with headers
text/plain 118b
I have applied a slightly modified version of Ed's patch as commit 52e3acf87aacbe6b39ecb42fe0adb6c0dac1019d. -zefram


This service is sponsored and maintained by Best Practical Solutions and runs on Perl.org infrastructure.

For issues related to this RT instance (aka "perlbug"), please contact perlbug-admin at perl.org