[ruby/prism] Fix hash pairs in patterns

https://github.com/ruby/prism/commit/b7ab29daa0
This commit is contained in:
Kevin Newton 2024-02-02 16:05:40 -05:00 коммит произвёл git
Родитель eaea53b836
Коммит d2f004cf6a
1 изменённых файлов: 10 добавлений и 6 удалений

Просмотреть файл

@ -105,14 +105,18 @@ module Prism
# { a: 1 } # { a: 1 }
# ^^^^ # ^^^^
def visit_assoc_node(node) def visit_assoc_node(node)
if node.value.is_a?(ImplicitNode) if in_pattern
builder.pair_label([node.key.slice.chomp(":"), srange(node.key.location)]) if node.value.is_a?(ImplicitNode)
elsif in_pattern && node.value.nil? if node.key.is_a?(SymbolNode)
if node.key.is_a?(SymbolNode) builder.match_hash_var([node.key.unescaped, srange(node.key.location)])
builder.match_hash_var([node.key.unescaped, srange(node.key.location)]) else
builder.match_hash_var_from_str(token(node.key.opening_loc), visit_all(node.key.parts), token(node.key.closing_loc))
end
else else
builder.match_hash_var_from_str(token(node.key.opening_loc), visit_all(node.key.parts), token(node.key.closing_loc)) builder.pair_keyword([node.key.unescaped, srange(node.key.location)], visit(node.value))
end end
elsif node.value.is_a?(ImplicitNode)
builder.pair_label([node.key.unescaped, srange(node.key.location)])
elsif node.operator_loc elsif node.operator_loc
builder.pair(visit(node.key), token(node.operator_loc), visit(node.value)) builder.pair(visit(node.key), token(node.operator_loc), visit(node.value))
elsif node.key.is_a?(SymbolNode) && node.key.opening_loc.nil? elsif node.key.is_a?(SymbolNode) && node.key.opening_loc.nil?