Honor scalar context for sort returned from a subroutine
I maintainer di solito rispondono entro 1 giorno
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 25/100
Direzione di ricerca
Start by reviewing PR #1992, which is already open and describes the fix across the JVM and interpreter backends. Trace how a subroutine return passes runtime context to sort, then run the focused regression and scalar-sort tests on both backends. Done means scalar callers receive Perl's undef result while list behavior remains covered.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
sort in a subroutine return did not honor the caller's scalar context. Perl returns undef for sort in scalar context, but PerlOnJava returned the number of sorted values. This broke DataCube 0.01's tables method, which returns sort keys ... and is called in scalar context by its test suite.
Minimal reproducer
sub f { return sort qw(a b c) }
my $x = f();
print defined($x) ? "<$x>\n" : "undef\n";
Expected under system Perl: undef
Before the fix, PerlOnJava returned <3> on both JVM and interpreter backends.
Evidence
- CPAN distribution: DataCube 0.01; random tester run
20261106-154847-45334. - System Perl 5.42.2: upstream
make testpassed, 26 tests. - PerlOnJava 5.44.1, build commit
13db7bd4a0:t/00_use.texited 255 on both JVM and interpreter after 15 assertions, withCan't use string ("40") as a HASH ref. - The DataCube test assigns
$cube->tablesto a scalar.DataCube::tablesreturnssort keys ...; the scalar result was then treated as a hash reference.
Confirmed cause and fix
Static scalar-context sort was already handled. In a subroutine return, however, the caller's context is dynamic: PerlOnJava retained the sorted list and generic return handling scalarized it to the list length. PR #1992 passes the runtime context to sort on both backends, preserving input evaluation while skipping the comparator and returning undef for a scalar caller.
The focused regression and existing scalar-sort tests pass on system Perl, JVM, and interpreter. The full repository make and documentation link check pass. The DataCube suite progresses beyond the former failure, but later tests exceed the bounded 180-second runs; a full post-fix DataCube suite pass is not claimed.
- Lingua principale
- Perl
- Stelle
- 65
- Fork
- 8
- Merge medio
- 5h 57m
- PR unite (30g)
- 177
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
-
area:runtime documentation enhancement
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:parser bug
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
fglock/PerlOnJava#1990 ·
I maintainer di solito rispondono entro 1 giorno
-
area:parser area:unicode bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
fglock/PerlOnJava#1989 ·
I maintainer di solito rispondono entro 1 giorno
-
area:backend bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 55/100
fglock/PerlOnJava#1981 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
area:runtime bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 57/100
fglock/PerlOnJava#1980 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di fglock/PerlOnJava
Issue simili
-
check_keywords.pl dies before reporting an unknown keyword categoryForse già presa @zhaohai666 l’ha presa 1 giorno fa. Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 87/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
libwww-perl/HTTP-Message#236 ·
-
1.severity: security
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
wave-followup
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100