Issue #13073 has been reported by Alexander Payne. ---------------------------------------- Bug #13073: Hash Key => Proc parse failure https://bugs.ruby-lang.org/issues/13073 * Author: Alexander Payne * Status: Open * Priority: Normal * Assignee: * Target version: * ruby -v: 2.4.0p0 * Backport: 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN ---------------------------------------- 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: ```ruby 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](https://github.com/middleman/middleman/blob/master/middleman-core/lib/middleman-core/application.rb#L194). -- https://bugs.ruby-lang.org/ Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe> <http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>