Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Short-circuit expressions leak list context through scalar prototypes

Cerrado
#1,891 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

@fglock ya está trabajando en esto.

Desde el 27/10/2026.

  • #1893 de @fglock — abierto

Evaluación

Dificultad
4/5
Tiempo estimado
1-2 días
Aptitud para principiantes
55/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
java, perl

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

area:parser bug

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-Checker 1.04, CPAN run 20261026-163826-15395.
  • System Perl 5.42.2 on macOS: upstream t/use.t passes (2/2).
  • PerlOnJava 5.44.1 on the JVM and interpreter backends: upstream t/use.t failed (0/2) before the fix.
  • The focused regression prototype_parenthesized_and_argument.t failed 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

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de fglock/PerlOnJava

Todos los issues de fglock/PerlOnJava

Issues similares

Más issues de Perl

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.