Skip to content

implicit assignop in qq string #10882

Closed
Closed

Description

@p5pRT

Migrated from rt.perl.org#80368 (status was 'resolved')

Searchable as RT80368$

Activity

  1. p5pRT commented on Dec 7, 2010

    @p5pRT
    Author

    From zefram@fysh.org

    Created by zefram@fysh.org

    $ perl -e 'print "a\U="'
    Can't modify constant item in concatenation (.) or string at -e line 1, near "print "a\U=""
    Execution of -e aborted due to compilation errors.

    The "a\U=" string constant ought to generate ops corresponding roughly to
    "a".uc("=") (which would then be constant-folded). However, the "=" is
    being interpreted by the tokeniser as part of the concatenation operator,
    producing ops corresponding to "a".=uc("") (which generates the error).

    This happens because the implicit concatenation operator is generated
    in toke.c via the Aop() macro, which allows an addition-type operator
    to be mutated into an assignment operator if it is immediately followed
    by an "=". It should instead be generated via one of the other macros,
    or possibly a new macro, that doesn't allow for mutation to an assignment
    operator. There are multiple sites in toke.c making the same mistake.

    Perl Info
    
    Flags:
        category=core
        severity=low
    
    Site configuration information for perl 5.10.0:
    
    Configured by Debian Project at Fri Aug 28 22:23:22 UTC 2009.
    
    Summary of my perl5 (revision 5 version 10 subversion 0) configuration:
      Platform:
        osname=linux, osvers=2.6.30.5-dsa-amd64, archname=x86_64-linux-gnu-thread-multi
        uname='linux brahms 2.6.30.5-dsa-amd64 #1 smp mon aug 17 02:18:43 cest 2009 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.0 -Dsitearch=/usr/local/lib/perl/5.10.0 -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.0 -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 -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 -I/usr/local/include'
        ccversion='', gccversion='4.3.2', 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 =' -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.7.so, so=so, useshrplib=true, libperl=libperl.so.5.10.0
        gnulibc_version='2.7'
      Dynamic Linking:
        dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
        cccdlflags='-fPIC', lddlflags='-shared -O2 -g -L/usr/local/lib'
    
    Locally applied patches:
        
    
    
    @INC for perl 5.10.0:
        /etc/perl
        /usr/local/lib/perl/5.10.0
        /usr/local/share/perl/5.10.0
        /usr/lib/perl5
        /usr/share/perl5
        /usr/lib/perl/5.10
        /usr/share/perl/5.10
        /usr/local/lib/site_perl
        .
    
    
    Environment for perl 5.10.0:
        HOME=/home/zefram
        LANG (unset)
        LANGUAGE (unset)
        LD_LIBRARY_PATH (unset)
        LOGDIR (unset)
        PATH=/home/zefram/pub/x86_64-unknown-linux-gnu/bin:/home/zefram/pub/common/bin:/usr/bin:/usr/X11R6/bin:/bin:/usr/local/bin:/usr/games
        PERL_BADLANG (unset)
        SHELL=/usr/bin/zsh
    
    
  2. p5pRT commented on Aug 25, 2014

    @p5pRT
    Author

    From @cpansprout

    Fixed in e4916dd.

    --

    Father Chrysostomos

  3. p5pRT commented on Aug 25, 2014

    @p5pRT
    Author

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

  4. p5pRT commented on Aug 25, 2014

    @p5pRT
    Author

    @cpansprout - Status changed from 'open' to 'pending release'

  5. p5pRT commented on Jun 2, 2015

    @p5pRT
    Author

    From @khwilliamson

    Thanks for submitting this ticket

    The issue should be resolved with the release today of Perl v5.22. If you find that the problem persists, feel free to reopen this ticket

    --
    Karl Williamson for the Perl 5 porters team

  6. p5pRT commented on Jun 2, 2015

    @p5pRT
    Author

    @khwilliamson - Status changed from 'pending release' to 'resolved'

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions