diff --git a/lib/prism/translation/parser/compiler.rb b/lib/prism/translation/parser/compiler.rb index 497d5ab1ee..388bd4687d 100644 --- a/lib/prism/translation/parser/compiler.rb +++ b/lib/prism/translation/parser/compiler.rb @@ -1119,7 +1119,7 @@ def visit_interpolated_string_node(node) def visit_interpolated_symbol_node(node) builder.symbol_compose( token(node.opening_loc), - visit_all(node.parts), + string_nodes_from_interpolation(node, node.opening), token(node.closing_loc) ) end diff --git a/test/prism/fixtures/symbols.txt b/test/prism/fixtures/symbols.txt index edee418bca..34895b9e9f 100644 --- a/test/prism/fixtures/symbols.txt +++ b/test/prism/fixtures/symbols.txt @@ -4,12 +4,12 @@ :"abc#{1}" -" +:" foo\ b\nar " -" +:" foo\ b\nar #{} diff --git a/test/prism/ruby/ruby_parser_test.rb b/test/prism/ruby/ruby_parser_test.rb index a92e8080de..03bcfafc42 100644 --- a/test/prism/ruby/ruby_parser_test.rb +++ b/test/prism/ruby/ruby_parser_test.rb @@ -71,6 +71,7 @@ class RubyParserTest < TestCase "seattlerb/heredoc_with_only_carriage_returns.txt", "spanning_heredoc_newlines.txt", "spanning_heredoc.txt", + "symbols.txt", "tilde_heredocs.txt", "unparser/corpus/literal/literal.txt", "while.txt", diff --git a/test/prism/snapshots/symbols.txt b/test/prism/snapshots/symbols.txt index d273876437..5d988e7313 100644 --- a/test/prism/snapshots/symbols.txt +++ b/test/prism/snapshots/symbols.txt @@ -56,20 +56,20 @@ │ │ │ └── value: 1 │ │ └── closing_loc: (5,8)-(5,9) = "}" │ └── closing_loc: (5,9)-(5,10) = "\"" - ├── @ StringNode (location: (7,0)-(10,1)) - │ ├── flags: newline - │ ├── opening_loc: (7,0)-(7,1) = "\"" - │ ├── content_loc: (7,1)-(10,0) = "\nfoo\\\nb\\nar\n" + ├── @ SymbolNode (location: (7,0)-(10,1)) + │ ├── flags: newline, static_literal, forced_us_ascii_encoding + │ ├── opening_loc: (7,0)-(7,2) = ":\"" + │ ├── value_loc: (7,2)-(10,0) = "\nfoo\\\nb\\nar\n" │ ├── closing_loc: (10,0)-(10,1) = "\"" │ └── unescaped: "\nfoob\nar\n" - ├── @ InterpolatedStringNode (location: (12,0)-(16,1)) + ├── @ InterpolatedSymbolNode (location: (12,0)-(16,1)) │ ├── flags: newline - │ ├── opening_loc: (12,0)-(12,1) = "\"" + │ ├── opening_loc: (12,0)-(12,2) = ":\"" │ ├── parts: (length: 3) - │ │ ├── @ StringNode (location: (12,1)-(15,0)) + │ │ ├── @ StringNode (location: (12,2)-(15,0)) │ │ │ ├── flags: static_literal, frozen │ │ │ ├── opening_loc: ∅ - │ │ │ ├── content_loc: (12,1)-(15,0) = "\nfoo\\\nb\\nar\n" + │ │ │ ├── content_loc: (12,2)-(15,0) = "\nfoo\\\nb\\nar\n" │ │ │ ├── closing_loc: ∅ │ │ │ └── unescaped: "\nfoob\nar\n" │ │ ├── @ EmbeddedStatementsNode (location: (15,0)-(15,3))