Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Support indirect-object method dispatch used by Set::IntSpan

Aperta
#1,429 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

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

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

area:cpan-port area:parser bug

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.t passes 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::IntSpan t/real_set.t dispatch to the object method on both backends.
  • Set::IntSpan 1.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

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di fglock/PerlOnJava

Tutte le issue di fglock/PerlOnJava

Issue simili

Altre issue su Perl

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.