Support indirect-object method dispatch used by Set::IntSpan
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 55/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- perl
- Ambito
- compilers, testing-qa
Direzione di ricerca
Inizia eseguendo il test mirato di Set::IntSpan in t/real_set.t, in particolare le chiamate indirette intorno alla riga 22, su entrambi i backend, JVM e interprete. Traccia la gestione di queste chiamate da parte del parser/compiler e confronta il lavoro correlato sul parser nelle issue #1166 e #1314. Il lavoro è completato quando tutte e quattro le forme eseguono correttamente il dispatch, è stata aggiunta la copertura di regressione e l'intera suite di 1.947 test passa.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
Set::IntSpan 1.19 fails one upstream test under PerlOnJava because valid Perl indirect-object method syntax is resolved as a call to a nonexistent main:: subroutine.
Reproduction
Run the normal Set::IntSpan 1.19 test suite. The focused failure is t/real_set.t, which contains calls such as:
my $set_2 = union $set "1-5,8-9";
my $set_3 = union $set $set_2;
my $set_4 = union $set +[1, 5, 2, 8, 9, 1, 3, 4, 9];
These are valid Perl indirect-object method calls. The union method is implemented by Set::IntSpan and is used through the object in $set.
Expected result
System Perl passes the complete upstream suite:
- 20 test files
- 1,947 tests
t/real_set.tpasses all 4 tests
Actual result
PerlOnJava runs the first real_set.t operation successfully, then fails at the next indirect method call:
1..4
#real_set
#real_set: union set -> -
ok 1
Undefined subroutine &main::union called at t/real_set.t line 22.
The archived CPAN run records:
Failed 1/20 test programs. 0/1944 subtests failed.
The focused t/real_set.t failure reproduces on both the JVM and interpreter backends.
Likely root cause
The parser/compiler recognizes the first form, union $set, sufficiently to execute the empty-set case, but does not consistently preserve the indirect-object method dispatch when additional arguments follow. It emits or resolves union as an ordinary bareword subroutine call in the main package instead of dispatching it as a method on $set.
This is a pure-Perl parser/runtime compatibility issue. Set::IntSpan contains no XS, C, XSLoader, DynaLoader, or FFI dependency, and the failure is independent of services or platform prerequisites.
Acceptance criteria
- All indirect-object method forms used by
Set::IntSpant/real_set.tdispatch to the object method on both backends. Set::IntSpan1.19 passes all 1,947 upstream tests on JVM and interpreter backends.- Add project-owned regression coverage for an indirect method call with no extra argument, a string argument, an object argument, and an array-reference argument.
- Preserve existing parsing behavior for ordinary bareword subroutine calls and malformed syntax.
Evidence
- CPAN run:
20260918-141920-96054 - Distribution:
Set-IntSpan-1.19 - Failing test:
t/real_set.t, line 22 (union $set "1-5,8-9") - System Perl: PASS, 20 files / 1,947 tests
- PerlOnJava: FAIL, 1 file; the run reached 1,944 tests before aborting
- JVM and interpreter: focused failure reproduced
Related issues
- #1166 tracks valid fully-qualified indirect-object constructor forms. It covers a related parser area, but not this unqualified indirect-object method dispatch form.
- #1314 tracks bareword filehandle method dispatch used by
Expect. It is related at the method-dispatch level, but this failure involves a normal Perl object and does not depend on filehandle or IO behavior.
This issue should be coordinated with those parser/runtime fixes, while retaining Set::IntSpan as independent regression coverage.
- Lingua principale
- Perl
- Stelle
- 64
- Fork
- 6
- Merge medio
- 4h 34m
- PR unite (30g)
- 181
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di fglock/PerlOnJava
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
fglock/PerlOnJava#1579 ·
I maintainer di solito rispondono entro 1 giorno
-
area:cpan-port area:unicode bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
fglock/PerlOnJava#1341 ·
I maintainer di solito rispondono entro 1 giorno
-
area:io area:runtime bug
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
fglock/PerlOnJava#1630 ·
I maintainer di solito rispondono entro 1 giorno
-
area:cpan-port area:unicode bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
fglock/PerlOnJava#1629 ·
I maintainer di solito rispondono entro 1 giorno
-
area:cpan-port bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 55/100
fglock/PerlOnJava#1626 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di fglock/PerlOnJava
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
I maintainer di solito rispondono entro 4 giorni
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
ESCOMP/CAM#1701 · 1 commento ·
I maintainer di solito rispondono entro 3 giorni
-
Multiple IPs in hostnameApertabug OS Images
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
stfc/cloud-image-builders#233 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
language/en needs-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
kubernetes/website#57846 · 2 commenti ·
I maintainer di solito rispondono entro 2 giorni
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno