Skip to content

Psych syntax error changed in JRuby 9.2.13.0 #6365

@koic

Description

@koic

Environment Information

Provide at least:

  • % jruby -v
    jruby 9.2.13.0 (2.5.7) 2020-08-03 9a89c94 Java HotSpot(TM) 64-Bit Server VM 25.5-b02 on 1.8.0_05-b13 +jit [darwin-x86_64]
  • Darwin atelier.local 19.6.0 Darwin Kernel Version 19.6.0: Thu Jun 18 20:49:00 PDT 2020; root:xnu-6153.141.1~1/RELEASE_X86_64 x86_64

Expected Behavior

This is behavior of JRuby 9.2.12.0 (and MRI 2.5.8).

% ruby -v
jruby 9.2.12.0 (2.5.7) 2020-07-01 db01a49ba6 Java HotSpot(TM) 64-Bit Server VM 25.5-b02 on 1.8.0_05-b13 +jit [darwin-x86_64]
% ruby -ryaml -e "YAML.load('Exclude: **/*_old.rb')"
Psych::SyntaxError: (<unknown>): expected alphabetic or numeric character, but found *(42) while scanning an alias at line 1 column 11
         parse at org/jruby/ext/psych/PsychParser.java:246
  parse_stream at /Users/koic/.rbenv/versions/jruby-9.2.12.0/lib/ruby/stdlib/psych.rb:456
         parse at /Users/koic/.rbenv/versions/jruby-9.2.12.0/lib/ruby/stdlib/psych.rb:390
          load at /Users/koic/.rbenv/versions/jruby-9.2.12.0/lib/ruby/stdlib/psych.rb:277
        <main> at -e:1
% ruby -v
ruby 2.5.8p224 (2020-03-31 revision 67882) [x86_64-darwin17]
% ruby -ryaml -e "YAML.load('Exclude: **/*_old.rb')"
Traceback (most recent call last):
        4: from -e:1:in `<main>'
        3: from /Users/koic/.rbenv/versions/2.5.8/lib/ruby/2.5.0/psych.rb:263:in `load'
        2: from /Users/koic/.rbenv/versions/2.5.8/lib/ruby/2.5.0/psych.rb:350:in `parse'
        1: from /Users/koic/.rbenv/versions/2.5.8/lib/ruby/2.5.0/psych.rb:402:in `parse_stream'
/Users/koic/.rbenv/versions/2.5.8/lib/ruby/2.5.0/psych.rb:402:in `parse': (<unknown>): did not find expected alphabetic or numeric character while scanning an alias at line 1 column 10 (Psych::SyntaxError)

Both will raise Psych::SyntaxError.

Actual Behavior

This is behavior of JRuby 9.2.13.0.

% ruby -v
jruby 9.2.13.0 (2.5.7) 2020-08-03 9a89c94bcc Java HotSpot(TM) 64-Bit Server VM 25.5-b02 on 1.8.0_05-b13 +jit [darwin-x86_64]
% ruby -ryaml -e "YAML.load('Exclude: **/*_old.rb')"
Psych::BadAlias: Unknown alias: */*_old.rb
     visit_Psych_Nodes_Alias at /Users/koic/.rbenv/versions/jruby-9.2.13.0/lib/ruby/stdlib/psych/visitors/to_ruby.rb:325
                       fetch at org/jruby/RubyHash.java:1259
     visit_Psych_Nodes_Alias at /Users/koic/.rbenv/versions/jruby-9.2.13.0/lib/ruby/stdlib/psych/visitors/to_ruby.rb:325
                       visit at /Users/koic/.rbenv/versions/jruby-9.2.13.0/lib/ruby/stdlib/psych/visitors/visitor.rb:16
                      accept at /Users/koic/.rbenv/versions/jruby-9.2.13.0/lib/ruby/stdlib/psych/visitors/visitor.rb:6
                      accept at /Users/koic/.rbenv/versions/jruby-9.2.13.0/lib/ruby/stdlib/psych/visitors/to_ruby.rb:34
                 revive_hash at /Users/koic/.rbenv/versions/jruby-9.2.13.0/lib/ruby/stdlib/psych/visitors/to_ruby.rb:343
                  each_slice at org/jruby/RubyArray.java:1851
                 revive_hash at /Users/koic/.rbenv/versions/jruby-9.2.13.0/lib/ruby/stdlib/psych/visitors/to_ruby.rb:341
   visit_Psych_Nodes_Mapping at /Users/koic/.rbenv/versions/jruby-9.2.13.0/lib/ruby/stdlib/psych/visitors/to_ruby.rb:166
                       visit at /Users/koic/.rbenv/versions/jruby-9.2.13.0/lib/ruby/stdlib/psych/visitors/visitor.rb:16
                      accept at /Users/koic/.rbenv/versions/jruby-9.2.13.0/lib/ruby/stdlib/psych/visitors/visitor.rb:6
                      accept at /Users/koic/.rbenv/versions/jruby-9.2.13.0/lib/ruby/stdlib/psych/visitors/to_ruby.rb:34
  visit_Psych_Nodes_Document at /Users/koic/.rbenv/versions/jruby-9.2.13.0/lib/ruby/stdlib/psych/visitors/to_ruby.rb:317
                       visit at /Users/koic/.rbenv/versions/jruby-9.2.13.0/lib/ruby/stdlib/psych/visitors/visitor.rb:16
                      accept at /Users/koic/.rbenv/versions/jruby-9.2.13.0/lib/ruby/stdlib/psych/visitors/visitor.rb:6
                      accept at /Users/koic/.rbenv/versions/jruby-9.2.13.0/lib/ruby/stdlib/psych/visitors/to_ruby.rb:34
                     to_ruby at /Users/koic/.rbenv/versions/jruby-9.2.13.0/lib/ruby/stdlib/psych/nodes/node.rb:50
                        load at /Users/koic/.rbenv/versions/jruby-9.2.13.0/lib/ruby/stdlib/psych.rb:279
                      <main> at -e:1

Unexpectedly, JRuby 9.2.13.0 raises Psych::BadAlias.

I encountered this issue in RuboCop's CI build.
rubocop/rubocop#8588

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions