Project

General

Profile

Actions

Bug #13073

closed

Hash Key => Proc parse failure

Added by myrrlyn (Alexander Payne) almost 8 years ago. Updated over 7 years ago.

Status:
Closed
Assignee:
-
Target version:
-
[ruby-core:78837]

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

Also available in: Atom PDF

Like0
Like0Like0Like0