Skip to content

Parser rejects valid return sort map in Mojolicious 9.49 #1506

Description

@fglock

Summary

PerlOnJava cannot load Mojolicious 9.49 because the parser rejects valid Perl in Mojo::Loader::find_packages:

return sort map { /^(.+)::$/ ? "${ns}::$1" : () } keys %{"${ns}::"};

The error is:

Missing comma after first argument to return

This causes WebService-Rollbar-Notifier 1.002011 to fail its load tests.

Reproduction

Archived CPAN run: 20260924-085657-82687

Target distribution: WebService-Rollbar-Notifier-1.002011

The target fails 2 of 3 tests in t/00-load.t while loading Mojo::UserAgent and WebService::Rollbar::Notifier. The failure reproduces on both the JVM and interpreter backends.

A minimal load reproducer is:

PERL5LIB=<Mojolicious-lib> ./jperl -MMojo::Loader -e 'print "loaded\\n"'
PERL5LIB=<Mojolicious-lib> ./jperl --interpreter -MMojo::Loader -e 'print "loaded\\n"'

Both report the diagnostic at Mojo/Loader.pm line 37. System Perl loads the same module successfully.

Expected behavior

Mojo::Loader should compile successfully. System Perl passes Mojolicious 9.49's complete suite (4,194 tests) and the Rollbar distribution's 5 tests.

Suspected cause

The regression appears related to the indirect return map/grep diagnostic added in commit d4ebdd9b4 (fix: diagnose indirect map arguments to return). The diagnostic logic appears to treat return sort map ... as an invalid indirect map argument, although the intervening sort makes this valid Perl.

Requested fix

Restrict the diagnostic to actual indirect return NAME map/grep ... forms while preserving valid list operators such as return sort map .... Add a focused regression test for the Mojolicious expression and retain the existing diagnostic coverage.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions