diff --git a/parse.y b/parse.y index b904797969..b56e33b4f6 100644 --- a/parse.y +++ b/parse.y @@ -3796,7 +3796,7 @@ sym : fname | tCVAR ; -dsym : tSYMBEG xstring_contents tSTRING_END +dsym : tSYMBEG string_contents tSTRING_END { SET_LEX_STATE(EXPR_END); /*%%%*/ diff --git a/test/ripper/test_sexp.rb b/test/ripper/test_sexp.rb index 064c0f1536..d63464d5a7 100644 --- a/test/ripper/test_sexp.rb +++ b/test/ripper/test_sexp.rb @@ -132,4 +132,12 @@ eot end end end + + def test_dsym + bug15670 = '[ruby-core:91852]' + _, (_, _, s) = Ripper.sexp_raw(%q{:"sym"}) + assert_equal([:dyna_symbol, [:string_add, [:string_content], [:@tstring_content, "sym", [1, 2]]]], + s, + bug15670) + end end if ripper_test