From 28fe88468d7bde129221415bfa874f4b70bf6843 Mon Sep 17 00:00:00 2001 From: Kevin Newton Date: Fri, 15 Sep 2023 11:38:59 -0400 Subject: [PATCH] [ruby/yarp] Add more tests for implicit hash values https://github.com/ruby/yarp/commit/1ddd74dc11 --- test/yarp/fixtures/hashes.txt | 6 ++ test/yarp/snapshots/hashes.txt | 174 ++++++++++++++++++++++++++------- 2 files changed, 143 insertions(+), 37 deletions(-) diff --git a/test/yarp/fixtures/hashes.txt b/test/yarp/fixtures/hashes.txt index 42c430e43e..443b2359c6 100644 --- a/test/yarp/fixtures/hashes.txt +++ b/test/yarp/fixtures/hashes.txt @@ -18,3 +18,9 @@ { a: b, c: d, **e, f: g } { "a": !b? } + +a = 1 +tap do + b = 1 + { a:, b:, c:, D: } +end diff --git a/test/yarp/snapshots/hashes.txt b/test/yarp/snapshots/hashes.txt index dde8ba0199..b49db786a2 100644 --- a/test/yarp/snapshots/hashes.txt +++ b/test/yarp/snapshots/hashes.txt @@ -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"