Actions
Bug #13073
closedHash Key => Proc parse failure
Description
A Hash that stores multiple Proc literals causes syntax failures when passed as a method argument. Specifically, this only appears to happen on the second Proc literal in a Hash, not the first.
Minimal test case:
def foo a, h
[a, h]
end
foo :bar, {
a: proc do
end,
b: proc do
end
}
Attempting to load this code causes the following error:
SyntaxError: test.rb:8: syntax error, unexpected keyword_do_block, expecting '}'
b: proc do
^
I first encountered this while attempting to run the Middleman gem (version 4.2.0). The specific error is:
/usr/local/lib/ruby/gems/2.4.0/gems/middleman-core-4.2.0/lib/middleman-core/application.rb:194: syntax error, unexpected keyword_do_block, expecting '}' (SyntaxError)
layout: proc do |file, app|
^
/usr/local/lib/ruby/gems/2.4.0/gems/middleman-core-4.2.0/lib/middleman-core/application.rb:194: syntax error, unexpected '|', expecting '='
layout: proc do |file, app|
^
/usr/local/lib/ruby/gems/2.4.0/gems/middleman-core-4.2.0/lib/middleman-core/application.rb:197: syntax error, unexpected '}', expecting keyword_end
}, 'Callbacks that can exclude
^
/usr/local/lib/ruby/gems/2.4.0/gems/middleman-core-4.2.0/lib/middleman-core/application.rb:460: syntax error, unexpected keyword_end, expecting end-of-input
The offending code is visible on GitHub, here.
Actions
Like0
Like0Like0Like0