Short-circuit expressions leak list context through scalar prototypes
Los mantenedores suelen responder en 1 día
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 55/100
Línea de trabajo
Start with the prototype parsing path that reparses parenthesized low-precedence expressions, then run the focused regression prototype_parenthesized_and_argument.t on both JVM and interpreter backends. Compare the argument count and values with system Perl’s scalar-prototype behavior; done means the regression and the two upstream t/use.t assertions pass on both backends.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Summary
Short-circuit expressions passed to scalar-prototype arguments can retain list context in PerlOnJava. This causes the upstream GMail-Checker-1.04 test t/use.t to fail both assertions under Test::ok ($;$$).
Reproducer
use strict;
use warnings;
use Test;
BEGIN { plan tests => 1 }
our @args;
sub capture ($;$$) { @args = @_ }
my $object = bless {}, 'Example';
capture (defined($object) and (ref $object, 'new() is ok'));
print scalar(@args), "|", join('|', @args), "\n";
System Perl treats the parenthesized short-circuit expression as one scalar-prototype argument. PerlOnJava previously passed two values, so the and expression's list-valued right side escaped into the call argument list.
Evidence
- CPAN distribution:
GMail-Checker1.04, CPAN run20261026-163826-15395. - System Perl 5.42.2 on macOS: upstream
t/use.tpasses (2/2). - PerlOnJava 5.44.1 on the JVM and interpreter backends: upstream
t/use.tfailed (0/2) before the fix. - The focused regression
prototype_parenthesized_and_argument.tfailed on the JVM before the fix and passes on both backends after it. - The distribution is pure Perl and needs no Gmail credentials for these two tests.
The fix preserves scalar context when prototype parsing reparses a parenthesized low-precedence expression.
- Lenguaje dominante
- Perl
- Estrellas
- 65
- Forks
- 8
- Merge medio
- 6 h 6 min
- PR fusionados (30 d)
- 185
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de fglock/PerlOnJava
-
area:runtime documentation enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
fglock/PerlOnJava#1579 ·
Los mantenedores suelen responder en 1 día
-
CPAN: Lingua-ZH-Romanize-Pinyin build skips generated dictionaries and rejects $] test guardAbiertoarea:cpan-port area:parser bug
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
fglock/PerlOnJava#1919 ·
Los mantenedores suelen responder en 1 día
-
area:performance enhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
fglock/PerlOnJava#1911 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
fglock/PerlOnJava#1885 ·
Los mantenedores suelen responder en 1 día
-
Port Devel::Size for PerlOnJavaAbiertoarea:cpan-port enhancement help wanted
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
fglock/PerlOnJava#1880 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
Todos los issues de fglock/PerlOnJava
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 64/100
RotherOSS/otobo#6344 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
darold/pgFormatter#426 ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 77/100
libwww-perl/URI#219 ·
-
First suggestions when editing an existing tag does not use the existing textPosiblemente ocupada @AdityaOP007 la tomó hoy. Abierto✏️ Editing - Tags
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
openfoodfacts/openfoodfacts-server#15127 · 2 comentarios ·
Los mantenedores suelen responder en 1 día