Support indirect-object method dispatch used by Set::IntSpan
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 55/100
- issue の種類
- バグ
- 明瞭さ
- おおむね明確
- 活発さ
- 活発
- 技術スタック
- perl
- 領域
- compilers, testing-qa
調査の方向性
まず、t/real_set.t の対象を絞った Set::IntSpan テストを、特に22行目付近の間接呼び出しを中心に、JVM とインタープリターの両バックエンドで実行します。これらの呼び出しに対する parser/compiler の処理を追跡し、issues #1166 と #1314 にある関連する parser の作業と比較します。4つの形式がすべて正しく dispatch され、回帰テストのカバレッジが追加され、1,947テストからなる完全なテストスイートがパスすれば完了です。
索引モデルが issue の本文から書いたものです。
説明
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.
- 主要言語
- Perl
- スター
- 64
- フォーク
- 7
- 平均マージ
- 4時間 29分
- マージ済み PR(30日)
- 176
環境構築
- Dockerfile または Docker Compose ファイルあり
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
fglock/PerlOnJava のほかの issue
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
fglock/PerlOnJava#1579 ·
メンテナーはふだん 1 日以内に返信
-
area:cpan-port area:unicode bug
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
fglock/PerlOnJava#1341 ·
メンテナーはふだん 1 日以内に返信
-
area:platform area:runtime bug
難易度 4/5 3〜5日 初心者へのやさしさ 45/100
fglock/PerlOnJava#1635 ·
メンテナーはふだん 1 日以内に返信
-
area:cpan-port area:runtime bug
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
fglock/PerlOnJava#1634 ·
メンテナーはふだん 1 日以内に返信
-
area:cpan-port bug
難易度 3/5 1〜2日 初心者へのやさしさ 72/100
fglock/PerlOnJava#1633 ·
メンテナーはふだん 1 日以内に返信
fglock/PerlOnJava の issue をすべて見る
似ている issue
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
convos-chat/convos#977 ·
-
難易度 1/5 1時間未満 初心者へのやさしさ 90/100
inverse-inc/packetfence#9387 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
linux-test-project/lcov#552 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
szTheory/exifcleaner#383 ·
メンテナーはふだん 1 日以内に返信
-
1.severity: security
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
NixOS/nixpkgs#569828 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信