From: "turboladen (Steve Loveless)" Date: 2012-03-28T02:58:06+09:00 Subject: [ruby-core:43775] [ruby-trunk - Bug #6211][Open] Ripper lexes :on_rbrace when it should find :on_embexpr_end Issue #6211 has been reported by turboladen (Steve Loveless). ---------------------------------------- Bug #6211: Ripper lexes :on_rbrace when it should find :on_embexpr_end https://bugs.ruby-lang.org/issues/6211 Author: turboladen (Steve Loveless) Status: Open Priority: Normal Assignee: Category: Target version: ruby -v: ruby 1.9.3p125 (2012-02-16 revision 34643) [x86_64-darwin11.3.0] =begin 1.9.3-p125 :001 > require 'ripper' => true 1.9.3-p125 :002 > Ripper.lex %Q{`\#{cmd}`} => [[[1, 0], :on_backtick, "`"], [[1, 1], :on_embexpr_beg, "\#{"], [[1, 3], :on_ident, "cmd"], [[1, 6], :on_rbrace, "}"], [[1, 7], :on_tstring_end, "`"]] I'd expect (({[[1, 6], :on_rbrace, "}"]})) to be (({[[1, 6], :on_embexpr_end, "}"]})). I also just noticed that there's similar behavior with backticks--the first gets parsed as such, but the last gets parsed as (({:on_tstring_end})). This seems less obvious/important (?) compared to the embexpr stuff, as the type of embexpr tokens imply a beg & end; backticks don't imply beg & end, but, all the same, feel inconsistent. =end -- http://bugs.ruby-lang.org/