Honor scalar context for sort returned from a subroutine

Ouverte
#1,991 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

@fglock y travaille déjà.

Depuis le 6/11/2026.

  • #1992 par @fglock — ouverte

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
25/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
À l'abandon
Stack technique
perl
Domaine
backend

Piste de recherche

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.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

area:runtime bug

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 test passed, 26 tests.
  • PerlOnJava 5.44.1, build commit 13db7bd4a0: t/00_use.t exited 255 on both JVM and interpreter after 15 assertions, with Can't use string ("40") as a HASH ref.
  • The DataCube test assigns $cube->tables to a scalar. DataCube::tables returns sort 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.

Langage dominant
Perl
Étoiles
65
Forks
8
Merge moyen
5 h 57 min
PR mergées (30 j)
177

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de fglock/PerlOnJava

Toutes les issues de fglock/PerlOnJava

Issues similaires

Plus d'issues Perl

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.