[ruby/yarp] Add more tests for implicit hash values

https://github.com/ruby/yarp/commit/1ddd74dc11
This commit is contained in:
Kevin Newton 2023-09-15 11:38:59 -04:00 committed by git
parent 5f9f2fd72e
commit 28fe88468d
2 changed files with 143 additions and 37 deletions

View File

@ -18,3 +18,9 @@
{ a: b, c: d, **e, f: g }
{ "a": !b? }
a = 1
tap do
b = 1
{ a:, b:, c:, D: }
end

View File

@ -1,8 +1,8 @@
@ ProgramNode (location: (0...120))
├── locals: []
@ ProgramNode (location: (0...167))
├── locals: [:a]
└── statements:
@ StatementsNode (location: (0...120))
└── body: (length: 7)
@ StatementsNode (location: (0...167))
└── body: (length: 9)
├── @ HashNode (location: (0...2))
│ ├── opening_loc: (0...1) = "{"
│ ├── elements: (length: 0)
@ -220,36 +220,136 @@
│ │ │ └── name: "g"
│ │ └── operator_loc: ∅
│ └── closing_loc: (105...106) = "}"
└── @ HashNode (location: (108...120))
├── opening_loc: (108...109) = "{"
├── elements: (length: 1)
│ └── @ AssocNode (location: (110...118))
│ ├── key:
│ │ @ SymbolNode (location: (110...114))
│ │ ├── opening_loc: (110...111) = "\""
│ │ ├── value_loc: (111...112) = "a"
│ │ ├── closing_loc: (112...114) = "\":"
│ │ └── unescaped: "a"
│ ├── value:
│ │ @ CallNode (location: (115...118))
│ │ ├── receiver:
│ │ │ @ CallNode (location: (116...118))
│ │ │ ├── receiver: ∅
│ │ │ ├── call_operator_loc: ∅
│ │ │ ├── message_loc: (116...118) = "b?"
│ │ │ ├── opening_loc: ∅
│ │ │ ├── arguments: ∅
│ │ │ ├── closing_loc: ∅
│ │ │ ├── block: ∅
│ │ │ ├── flags: ∅
│ │ │ └── name: "b?"
│ │ ├── call_operator_loc: ∅
│ │ ├── message_loc: (115...116) = "!"
│ │ ├── opening_loc: ∅
│ │ ├── arguments: ∅
│ │ ├── closing_loc: ∅
│ │ ├── block: ∅
│ │ ├── flags: ∅
│ │ └── name: "!"
│ └── operator_loc: ∅
└── closing_loc: (119...120) = "}"
├── @ HashNode (location: (108...120))
│ ├── opening_loc: (108...109) = "{"
│ ├── elements: (length: 1)
│ │ └── @ AssocNode (location: (110...118))
│ │ ├── key:
│ │ │ @ SymbolNode (location: (110...114))
│ │ │ ├── opening_loc: (110...111) = "\""
│ │ │ ├── value_loc: (111...112) = "a"
│ │ │ ├── closing_loc: (112...114) = "\":"
│ │ │ └── unescaped: "a"
│ │ ├── value:
│ │ │ @ CallNode (location: (115...118))
│ │ │ ├── receiver:
│ │ │ │ @ CallNode (location: (116...118))
│ │ │ │ ├── receiver: ∅
│ │ │ │ ├── call_operator_loc: ∅
│ │ │ │ ├── message_loc: (116...118) = "b?"
│ │ │ │ ├── opening_loc: ∅
│ │ │ │ ├── arguments: ∅
│ │ │ │ ├── closing_loc: ∅
│ │ │ │ ├── block: ∅
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: "b?"
│ │ │ ├── call_operator_loc: ∅
│ │ │ ├── message_loc: (115...116) = "!"
│ │ │ ├── opening_loc: ∅
│ │ │ ├── arguments: ∅
│ │ │ ├── closing_loc: ∅
│ │ │ ├── block: ∅
│ │ │ ├── flags: ∅
│ │ │ └── name: "!"
│ │ └── operator_loc: ∅
│ └── closing_loc: (119...120) = "}"
├── @ LocalVariableWriteNode (location: (122...127))
│ ├── name: :a
│ ├── depth: 0
│ ├── name_loc: (122...123) = "a"
│ ├── value:
│ │ @ IntegerNode (location: (126...127))
│ │ └── flags: decimal
│ └── operator_loc: (124...125) = "="
└── @ CallNode (location: (128...167))
├── receiver: ∅
├── call_operator_loc: ∅
├── message_loc: (128...131) = "tap"
├── opening_loc: ∅
├── arguments: ∅
├── closing_loc: ∅
├── block:
│ @ BlockNode (location: (132...167))
│ ├── locals: [:b]
│ ├── parameters: ∅
│ ├── body:
│ │ @ StatementsNode (location: (137...163))
│ │ └── body: (length: 2)
│ │ ├── @ LocalVariableWriteNode (location: (137...142))
│ │ │ ├── name: :b
│ │ │ ├── depth: 0
│ │ │ ├── name_loc: (137...138) = "b"
│ │ │ ├── value:
│ │ │ │ @ IntegerNode (location: (141...142))
│ │ │ │ └── flags: decimal
│ │ │ └── operator_loc: (139...140) = "="
│ │ └── @ HashNode (location: (145...163))
│ │ ├── opening_loc: (145...146) = "{"
│ │ ├── elements: (length: 4)
│ │ │ ├── @ AssocNode (location: (147...149))
│ │ │ │ ├── key:
│ │ │ │ │ @ SymbolNode (location: (147...149))
│ │ │ │ │ ├── opening_loc: ∅
│ │ │ │ │ ├── value_loc: (147...148) = "a"
│ │ │ │ │ ├── closing_loc: (148...149) = ":"
│ │ │ │ │ └── unescaped: "a"
│ │ │ │ ├── value:
│ │ │ │ │ @ ImplicitNode (location: (147...149))
│ │ │ │ │ └── value:
│ │ │ │ │ @ LocalVariableReadNode (location: (147...149))
│ │ │ │ │ ├── name: :a
│ │ │ │ │ └── depth: 1
│ │ │ │ └── operator_loc: ∅
│ │ │ ├── @ AssocNode (location: (151...153))
│ │ │ │ ├── key:
│ │ │ │ │ @ SymbolNode (location: (151...153))
│ │ │ │ │ ├── opening_loc: ∅
│ │ │ │ │ ├── value_loc: (151...152) = "b"
│ │ │ │ │ ├── closing_loc: (152...153) = ":"
│ │ │ │ │ └── unescaped: "b"
│ │ │ │ ├── value:
│ │ │ │ │ @ ImplicitNode (location: (151...153))
│ │ │ │ │ └── value:
│ │ │ │ │ @ LocalVariableReadNode (location: (151...153))
│ │ │ │ │ ├── name: :b
│ │ │ │ │ └── depth: 0
│ │ │ │ └── operator_loc: ∅
│ │ │ ├── @ AssocNode (location: (155...157))
│ │ │ │ ├── key:
│ │ │ │ │ @ SymbolNode (location: (155...157))
│ │ │ │ │ ├── opening_loc: ∅
│ │ │ │ │ ├── value_loc: (155...156) = "c"
│ │ │ │ │ ├── closing_loc: (156...157) = ":"
│ │ │ │ │ └── unescaped: "c"
│ │ │ │ ├── value:
│ │ │ │ │ @ ImplicitNode (location: (155...157))
│ │ │ │ │ └── value:
│ │ │ │ │ @ CallNode (location: (155...157))
│ │ │ │ │ ├── receiver: ∅
│ │ │ │ │ ├── call_operator_loc: ∅
│ │ │ │ │ ├── message_loc: (155...156) = "c"
│ │ │ │ │ ├── opening_loc: ∅
│ │ │ │ │ ├── arguments: ∅
│ │ │ │ │ ├── closing_loc: ∅
│ │ │ │ │ ├── block: ∅
│ │ │ │ │ ├── flags: ∅
│ │ │ │ │ └── name: "c"
│ │ │ │ └── operator_loc: ∅
│ │ │ └── @ AssocNode (location: (159...161))
│ │ │ ├── key:
│ │ │ │ @ SymbolNode (location: (159...161))
│ │ │ │ ├── opening_loc: ∅
│ │ │ │ ├── value_loc: (159...160) = "D"
│ │ │ │ ├── closing_loc: (160...161) = ":"
│ │ │ │ └── unescaped: "D"
│ │ │ ├── value:
│ │ │ │ @ ImplicitNode (location: (159...161))
│ │ │ │ └── value:
│ │ │ │ @ ConstantReadNode (location: (159...161))
│ │ │ │ └── name: :D
│ │ │ └── operator_loc: ∅
│ │ └── closing_loc: (162...163) = "}"
│ ├── opening_loc: (132...134) = "do"
│ └── closing_loc: (164...167) = "end"
├── flags: ∅
└── name: "tap"