From: maciej@... Date: 2015-10-19T15:35:21+00:00 Subject: [ruby-core:71114] [Ruby trunk - Bug #11604] [Open] Ruby's interpreting hash symbol keys as parts of Ruby syntax Issue #11604 has been reported by Maciej Mensfeld. ---------------------------------------- Bug #11604: Ruby's interpreting hash symbol keys as parts of Ruby syntax https://bugs.ruby-lang.org/issues/11604 * Author: Maciej Mensfeld * Status: Open * Priority: Normal * Assignee: Yukihiro Matsumoto * ruby -v: ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-linux] * Backport: ---------------------------------------- Cannot initialize hashes with some Ruby reserved keywords like: while, until, if, unless, do. Can with other like class, end, elsif, super. Don't really get why ~~~ { while: 1 } # Will fail # error.rb:3: syntax error, unexpected ':' # print { while: 1 } ~~~ However when assigned, works perfectly ~~~ hash = { while: 1 } ~~~ But when used as a method argument - fails ~~~ run(for: 1) run { for: 1 } ~~~ Works with old syntax ~~~ { :if => 1 } ~~~ And with new but with quotation marks ~~~ { 'if': 1 } ~~~ Example file included. Please just execute like this: ~~~ ruby error.rb ~~~ ---Files-------------------------------- error.rb (278 Bytes) -- https://bugs.ruby-lang.org/