Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4552,7 +4552,7 @@ nodes:
fields:
- name: opening_loc
type: location?
- name: value_loc
- name: content_loc
type: location
- name: closing_loc
type: location?
Expand Down
12 changes: 12 additions & 0 deletions lib/prism/node_ext.rb
Original file line number Diff line number Diff line change
Expand Up @@ -488,5 +488,17 @@ def closing_loc # :nodoc
end_keyword_loc
end
end

class SymbolNode < Node
#: () -> String
def value # :nodoc
content
end

#: () -> Location
def value_loc # :nodoc
content_loc
end
end
# :startdoc:
end
24 changes: 12 additions & 12 deletions lib/prism/translation/parser/compiler.rb
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ def visit_assoc_node(node)
if key.opening.nil?
builder.match_hash_var([key.unescaped, srange(key.location)])
else
builder.match_hash_var_from_str(token(key.opening_loc), [builder.string_internal([key.unescaped, srange(key.value_loc)])], token(key.closing_loc))
builder.match_hash_var_from_str(token(key.opening_loc), [builder.string_internal([key.unescaped, srange(key.content_loc)])], token(key.closing_loc))
end
else
builder.match_hash_var_from_str(token(key.opening_loc), visit_all(key.parts), token(key.closing_loc))
Expand All @@ -151,9 +151,9 @@ def visit_assoc_node(node)
implicit_value = if value.is_a?(CallNode)
builder.call_method(nil, nil, [value.name, srange(value.message_loc)])
elsif value.is_a?(ConstantReadNode)
builder.const([value.name, srange(key.value_loc)])
builder.const([value.name, srange(key.content_loc)])
else
builder.ident([value.name, srange(key.value_loc)]).updated(:lvar)
builder.ident([value.name, srange(key.content_loc)]).updated(:lvar)
end

builder.pair_keyword([key.unescaped, srange(key)], implicit_value)
Expand All @@ -165,13 +165,13 @@ def visit_assoc_node(node)
else
parts =
if key.is_a?(SymbolNode)
value = key.value
if value == ""
content = key.content
if content == ""
[]
elsif value.include?("\n")
string_nodes_from_line_continuations(key.unescaped, value, key.value_loc.start_offset, key.opening)
elsif content.include?("\n")
string_nodes_from_line_continuations(key.unescaped, content, key.content_loc.start_offset, key.opening)
else
[builder.string_internal([key.unescaped, srange(key.value_loc)])]
[builder.string_internal([key.unescaped, srange(key.content_loc)])]
end
else
visit_all(key.parts)
Expand Down Expand Up @@ -1775,12 +1775,12 @@ def visit_symbol_node(node)
end
else
parts =
if node.value == ""
if node.content == ""
[]
elsif node.value.include?("\n")
string_nodes_from_line_continuations(node.unescaped, node.value, node.value_loc.start_offset, node.opening)
elsif node.content.include?("\n")
string_nodes_from_line_continuations(node.unescaped, node.content, node.content_loc.start_offset, node.opening)
else
[builder.string_internal([node.unescaped, srange(node.value_loc)])]
[builder.string_internal([node.unescaped, srange(node.content_loc)])]
end

builder.symbol_compose(
Expand Down
22 changes: 11 additions & 11 deletions lib/prism/translation/ripper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -789,7 +789,7 @@ def visit_array_node(node)
visit_words_sep(opening_loc, previous, element)

bounds(element.location)
elements = on_qsymbols_add(elements, on_tstring_content(element.value))
elements = on_qsymbols_add(elements, on_tstring_content(element.content))

previous = element
end
Expand Down Expand Up @@ -853,7 +853,7 @@ def visit_array_node(node)
on_symbols_add(
elements,
if element.is_a?(SymbolNode)
on_word_add(on_word_new, on_tstring_content(element.value))
on_word_add(on_word_new, on_tstring_content(element.content))
else
element.parts.inject(on_word_new) do |word, part|
word_part =
Expand Down Expand Up @@ -2351,8 +2351,8 @@ def visit_hash_pattern_node(node)
if (key = element.key).opening_loc.nil?
visit(key)
else
bounds(key.value_loc)
if (value = key.value).empty?
bounds(key.content_loc)
if (value = key.content).empty?
on_string_content
else
on_string_add(on_string_content, on_tstring_content(value))
Expand Down Expand Up @@ -3841,24 +3841,24 @@ def visit_super_node(node)
def visit_symbol_node(node)
with_string_bounds(node) do
if (opening = node.opening)&.match?(/^%s|['"]:?$/)
bounds(node.value_loc)
bounds(node.content_loc)
content = on_string_content

if !(value = node.value).empty?
if !(value = node.content).empty?
content = on_string_add(content, on_tstring_content(value))
end

bounds(node.location)
on_dyna_symbol(content)
elsif (closing = node.closing) == ":"
bounds(node.location)
on_label("#{node.value}:")
on_label("#{node.content}:")
elsif opening.nil? && node.closing_loc.nil?
bounds(node.value_loc)
on_symbol_literal(visit_token(node.value))
bounds(node.content_loc)
on_symbol_literal(visit_token(node.content))
else
bounds(node.value_loc)
on_symbol_literal(on_symbol(visit_token(node.value)))
bounds(node.content_loc)
on_symbol_literal(on_symbol(visit_token(node.content)))
end
end
end
Expand Down
2 changes: 1 addition & 1 deletion lib/prism/translation/ruby_parser.rb
Original file line number Diff line number Diff line change
Expand Up @@ -1476,7 +1476,7 @@ def visit_super_node(node)
# :foo
# ^^^^
def visit_symbol_node(node)
node.value == "!@" ? s(node, :lit, :"!@") : s(node, :lit, node.unescaped.to_sym)
node.content == "!@" ? s(node, :lit, :"!@") : s(node, :lit, node.unescaped.to_sym)
end

# true
Expand Down
4 changes: 2 additions & 2 deletions rbi/generated/prism/dsl.rbi

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

20 changes: 10 additions & 10 deletions rbi/generated/prism/node.rbi

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions rbi/generated/prism/node_ext.rbi

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions rust/ruby-prism-sys/src/bindings.rs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions sig/generated/prism/dsl.rbs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

26 changes: 13 additions & 13 deletions sig/generated/prism/node.rbs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions sig/generated/prism/node_ext.rbs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions snapshots/3.3-3.3/keyword_args_in_array_assignment.txt
Original file line number Diff line number Diff line change
Expand Up @@ -39,14 +39,14 @@
│ │ │ @ SymbolNode (location: (1,10)-(1,15))
│ │ │ ├── flags: static_literal, forced_us_ascii_encoding
│ │ │ ├── opening_loc: ∅
│ │ │ ├── value_loc: (1,10)-(1,14) = "axis"
│ │ │ ├── content_loc: (1,10)-(1,14) = "axis"
│ │ │ ├── closing_loc: (1,14)-(1,15) = ":"
│ │ │ └── unescaped: "axis"
│ │ ├── value:
│ │ │ @ SymbolNode (location: (1,16)-(1,18))
│ │ │ ├── flags: static_literal, forced_us_ascii_encoding
│ │ │ ├── opening_loc: (1,16)-(1,17) = ":"
│ │ │ ├── value_loc: (1,17)-(1,18) = "y"
│ │ │ ├── content_loc: (1,17)-(1,18) = "y"
│ │ │ ├── closing_loc: ∅
│ │ │ └── unescaped: "y"
│ │ └── operator_loc: ∅
Expand Down
Loading
Loading