[ruby/prism] Add SPLAT flag on ArrayNode indicating if it contains splat element(s)

This commit puts a SPLAT flag on any ArrayNodes which contain
SplatNode elements

https://github.com/ruby/prism/commit/2fc1e7f181
This commit is contained in:
Jemma Issroff 2023-11-21 15:17:09 -05:00 committed by git
parent 3db21d2d4c
commit 8e80cad9e9
87 changed files with 442 additions and 215 deletions

View File

@ -334,6 +334,11 @@ flags:
- name: CONTAINS_KEYWORD_SPLAT
comment: "if arguments contain keyword splat"
comment: Flags for arguments nodes.
- name: ArrayNodeFlags
values:
- name: CONTAINS_SPLAT
comment: "if array contains splat nodes"
comment: Flags for array nodes.
- name: CallNodeFlags
values:
- name: SAFE_NAVIGATION
@ -459,6 +464,9 @@ nodes:
type: location?
- name: closing_loc
type: location?
- name: flags
type: flags
kind: ArrayNodeFlags
comment: |
Represents an array literal. This can be a regular array using brackets or
a special array using % like %w or %i.

View File

@ -1151,6 +1151,10 @@ pm_array_node_elements_append(pm_array_node_t *node, pm_node_t *element) {
if (PM_NODE_TYPE_P(element, PM_ARRAY_NODE) || PM_NODE_TYPE_P(element, PM_HASH_NODE) || PM_NODE_TYPE_P(element, PM_RANGE_NODE) || (element->flags & PM_NODE_FLAG_STATIC_LITERAL) == 0) {
node->base.flags &= (pm_node_flags_t) ~PM_NODE_FLAG_STATIC_LITERAL;
}
if (PM_NODE_TYPE_P(element, PM_SPLAT_NODE)) {
node->base.flags |= PM_ARRAY_NODE_FLAGS_CONTAINS_SPLAT;
}
}
/**

View File

@ -19,7 +19,8 @@
│ │ ├── flags: variable_call
│ │ └── name: :a
│ ├── opening_loc: (1,0)-(1,1) = "["
│ └── closing_loc: (1,3)-(1,4) = "]"
│ ├── closing_loc: (1,3)-(1,4) = "]"
│ └── flags: contains_splat
├── @ CallNode (location: (3,0)-(3,23))
│ ├── receiver:
│ │ @ CallNode (location: (3,0)-(3,3))
@ -67,7 +68,8 @@
│ │ │ │ └── @ IntegerNode (location: (3,22)-(3,23))
│ │ │ │ └── flags: decimal
│ │ │ ├── opening_loc: ∅
│ │ │ └── closing_loc: ∅
│ │ │ ├── closing_loc: ∅
│ │ │ └── flags: ∅
│ │ └── flags: ∅
│ ├── closing_loc: (3,12)-(3,13) = "]"
│ ├── block: ∅
@ -98,10 +100,12 @@
│ │ │ │ ├── closing_loc: ∅
│ │ │ │ └── unescaped: "c"
│ │ │ ├── opening_loc: (5,4)-(5,5) = "["
│ │ │ └── closing_loc: (5,11)-(5,12) = "]"
│ │ │ ├── closing_loc: (5,11)-(5,12) = "]"
│ │ │ └── flags: ∅
│ │ └── operator_loc: ∅
│ ├── opening_loc: (5,0)-(5,1) = "["
│ └── closing_loc: (5,12)-(5,13) = "]"
│ ├── closing_loc: (5,12)-(5,13) = "]"
│ └── flags: ∅
├── @ ArrayNode (location: (9,0)-(15,1))
│ ├── elements: (length: 5)
│ │ ├── @ SymbolNode (location: (9,1)-(9,3))
@ -127,7 +131,8 @@
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "d"
│ ├── opening_loc: (9,0)-(9,1) = "["
│ └── closing_loc: (15,0)-(15,1) = "]"
│ ├── closing_loc: (15,0)-(15,1) = "]"
│ └── flags: ∅
├── @ ArrayNode (location: (18,0)-(26,1))
│ ├── elements: (length: 5)
│ │ ├── @ SymbolNode (location: (18,1)-(18,3))
@ -153,7 +158,8 @@
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "d"
│ ├── opening_loc: (18,0)-(18,1) = "["
│ └── closing_loc: (26,0)-(26,1) = "]"
│ ├── closing_loc: (26,0)-(26,1) = "]"
│ └── flags: ∅
├── @ ArrayNode (location: (28,0)-(28,12))
│ ├── elements: (length: 1)
│ │ └── @ KeywordHashNode (location: (28,1)-(28,11))
@ -183,7 +189,8 @@
│ │ │ └── name: :bar
│ │ └── operator_loc: (28,5)-(28,7) = "=>"
│ ├── opening_loc: (28,0)-(28,1) = "["
│ └── closing_loc: (28,11)-(28,12) = "]"
│ ├── closing_loc: (28,11)-(28,12) = "]"
│ └── flags: ∅
├── @ CallNode (location: (30,0)-(30,19))
│ ├── receiver:
│ │ @ CallNode (location: (30,0)-(30,8))
@ -309,7 +316,8 @@
├── @ ArrayNode (location: (34,0)-(35,1))
│ ├── elements: (length: 0)
│ ├── opening_loc: (34,0)-(34,1) = "["
│ └── closing_loc: (35,0)-(35,1) = "]"
│ ├── closing_loc: (35,0)-(35,1) = "]"
│ └── flags: ∅
├── @ CallNode (location: (37,0)-(37,13))
│ ├── receiver:
│ │ @ CallNode (location: (37,0)-(37,3))
@ -471,7 +479,8 @@
│ │ └── @ IntegerNode (location: (41,20)-(41,21))
│ │ └── flags: decimal
│ ├── opening_loc: ∅
│ └── closing_loc: ∅
│ ├── closing_loc: ∅
│ └── flags: ∅
├── @ CallNode (location: (43,0)-(43,19))
│ ├── receiver:
│ │ @ CallNode (location: (43,0)-(43,3))
@ -626,7 +635,8 @@
│ │ │ └── closing_loc: (49,4)-(49,5) = "}"
│ │ └── operator_loc: (49,1)-(49,3) = "**"
│ ├── opening_loc: (49,0)-(49,1) = "["
│ └── closing_loc: (49,5)-(49,6) = "]"
│ ├── closing_loc: (49,5)-(49,6) = "]"
│ └── flags: ∅
├── @ ArrayNode (location: (51,0)-(51,6))
│ ├── elements: (length: 1)
│ │ └── @ KeywordHashNode (location: (51,1)-(51,5))
@ -645,7 +655,8 @@
│ │ │ └── name: :kw
│ │ └── operator_loc: (51,1)-(51,3) = "**"
│ ├── opening_loc: (51,0)-(51,1) = "["
│ └── closing_loc: (51,5)-(51,6) = "]"
│ ├── closing_loc: (51,5)-(51,6) = "]"
│ └── flags: ∅
├── @ ArrayNode (location: (53,0)-(53,9))
│ ├── elements: (length: 2)
│ │ ├── @ IntegerNode (location: (53,1)-(53,2))
@ -666,7 +677,8 @@
│ │ │ └── name: :kw
│ │ └── operator_loc: (53,4)-(53,6) = "**"
│ ├── opening_loc: (53,0)-(53,1) = "["
│ └── closing_loc: (53,8)-(53,9) = "]"
│ ├── closing_loc: (53,8)-(53,9) = "]"
│ └── flags: ∅
├── @ ArrayNode (location: (55,0)-(55,21))
│ ├── elements: (length: 2)
│ │ ├── @ IntegerNode (location: (55,1)-(55,2))
@ -707,7 +719,8 @@
│ │ │ └── name: :kw
│ │ └── operator_loc: (55,16)-(55,18) = "**"
│ ├── opening_loc: (55,0)-(55,1) = "["
│ └── closing_loc: (55,20)-(55,21) = "]"
│ ├── closing_loc: (55,20)-(55,21) = "]"
│ └── flags: ∅
├── @ ArrayNode (location: (57,0)-(59,1))
│ ├── elements: (length: 1)
│ │ └── @ KeywordHashNode (location: (58,2)-(58,12))
@ -737,7 +750,8 @@
│ │ │ └── name: :bar
│ │ └── operator_loc: (58,6)-(58,8) = "=>"
│ ├── opening_loc: (57,0)-(57,1) = "["
│ └── closing_loc: (59,0)-(59,1) = "]"
│ ├── closing_loc: (59,0)-(59,1) = "]"
│ └── flags: ∅
├── @ ArrayNode (location: (62,0)-(62,17))
│ ├── elements: (length: 3)
│ │ ├── @ SymbolNode (location: (62,3)-(62,6))
@ -756,7 +770,8 @@
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "three"
│ ├── opening_loc: (62,0)-(62,3) = "%i#"
│ └── closing_loc: (62,16)-(62,17) = "#"
│ ├── closing_loc: (62,16)-(62,17) = "#"
│ └── flags: ∅
├── @ ArrayNode (location: (64,0)-(64,17))
│ ├── elements: (length: 3)
│ │ ├── @ StringNode (location: (64,3)-(64,6))
@ -778,7 +793,8 @@
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "three"
│ ├── opening_loc: (64,0)-(64,3) = "%w#"
│ └── closing_loc: (64,16)-(64,17) = "#"
│ ├── closing_loc: (64,16)-(64,17) = "#"
│ └── flags: ∅
├── @ XStringNode (location: (66,0)-(66,17))
│ ├── opening_loc: (66,0)-(66,3) = "%x#"
│ ├── content_loc: (66,3)-(66,16) = "one two three"
@ -802,7 +818,8 @@
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "three"
│ ├── opening_loc: (69,0)-(69,3) = "%i@"
│ └── closing_loc: (69,16)-(69,17) = "@"
│ ├── closing_loc: (69,16)-(69,17) = "@"
│ └── flags: ∅
├── @ ArrayNode (location: (71,0)-(71,17))
│ ├── elements: (length: 3)
│ │ ├── @ StringNode (location: (71,3)-(71,6))
@ -824,7 +841,8 @@
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "three"
│ ├── opening_loc: (71,0)-(71,3) = "%w@"
│ └── closing_loc: (71,16)-(71,17) = "@"
│ ├── closing_loc: (71,16)-(71,17) = "@"
│ └── flags: ∅
├── @ XStringNode (location: (73,0)-(73,17))
│ ├── opening_loc: (73,0)-(73,3) = "%x@"
│ ├── content_loc: (73,3)-(73,16) = "one two three"
@ -848,7 +866,8 @@
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "three"
│ ├── opening_loc: (76,0)-(76,3) = "%i{"
│ └── closing_loc: (76,16)-(76,17) = "}"
│ ├── closing_loc: (76,16)-(76,17) = "}"
│ └── flags: ∅
├── @ ArrayNode (location: (78,0)-(78,17))
│ ├── elements: (length: 3)
│ │ ├── @ StringNode (location: (78,3)-(78,6))
@ -870,7 +889,8 @@
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "three"
│ ├── opening_loc: (78,0)-(78,3) = "%w{"
│ └── closing_loc: (78,16)-(78,17) = "}"
│ ├── closing_loc: (78,16)-(78,17) = "}"
│ └── flags: ∅
├── @ XStringNode (location: (80,0)-(80,17))
│ ├── opening_loc: (80,0)-(80,3) = "%x{"
│ ├── content_loc: (80,3)-(80,16) = "one two three"
@ -885,7 +905,8 @@
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "\\C:"
│ ├── opening_loc: (82,0)-(82,3) = "%w["
│ └── closing_loc: (82,6)-(82,7) = "]"
│ ├── closing_loc: (82,6)-(82,7) = "]"
│ └── flags: ∅
├── @ IndexOperatorWriteNode (location: (84,0)-(84,10))
│ ├── receiver:
│ │ @ CallNode (location: (84,0)-(84,3))

View File

@ -81,7 +81,8 @@
│ │ │ │ └── @ IntegerNode (location: (12,13)-(12,14))
│ │ │ │ └── flags: decimal
│ │ │ ├── opening_loc: (12,6)-(12,7) = "["
│ │ │ └── closing_loc: (12,14)-(12,15) = "]"
│ │ │ ├── closing_loc: (12,14)-(12,15) = "]"
│ │ │ └── flags: ∅
│ │ └── flags: ∅
│ └── keyword_loc: (12,0)-(12,5) = "break"
├── @ BreakNode (location: (14,0)-(17,1))

View File

@ -40,7 +40,8 @@
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "a\nb"
│ ├── opening_loc: (4,0)-(4,3) = "%I{"
│ └── closing_loc: (5,1)-(5,2) = "}"
│ ├── closing_loc: (5,1)-(5,2) = "}"
│ └── flags: ∅
├── @ StringNode (location: (7,0)-(7,4))
│ ├── flags: ∅
│ ├── opening_loc: (7,0)-(7,4) = "<<-E"

View File

@ -553,7 +553,8 @@
│ │ └── @ IntegerNode (location: (41,22)-(41,23))
│ │ └── flags: decimal
│ ├── opening_loc: ∅
│ └── closing_loc: ∅
│ ├── closing_loc: ∅
│ └── flags: ∅
├── @ CallNode (location: (43,0)-(43,4))
│ ├── receiver:
│ │ @ CallNode (location: (43,0)-(43,1))
@ -802,7 +803,8 @@
│ │ │ │ │ │ ├── closing_loc: ∅
│ │ │ │ │ │ └── unescaped: "y"
│ │ │ │ │ ├── opening_loc: (60,14)-(60,15) = "["
│ │ │ │ │ └── closing_loc: (60,21)-(60,22) = "]"
│ │ │ │ │ ├── closing_loc: (60,21)-(60,22) = "]"
│ │ │ │ │ └── flags: ∅
│ │ │ │ └── operator_loc: (60,11)-(60,13) = "=>"
│ │ │ └── @ AssocNode (location: (60,24)-(60,32))
│ │ │ ├── key:
@ -1760,7 +1762,8 @@
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :baz
│ │ │ ├── opening_loc: (115,4)-(115,5) = "["
│ │ │ └── closing_loc: (115,15)-(115,16) = "]"
│ │ │ ├── closing_loc: (115,15)-(115,16) = "]"
│ │ │ └── flags: ∅
│ │ └── flags: ∅
│ ├── closing_loc: ∅
│ ├── block: ∅

View File

@ -1675,7 +1675,8 @@
│ │ │ ├── operator_loc: (170,11)-(170,12) = "*"
│ │ │ └── expression: ∅
│ │ ├── opening_loc: (170,10)-(170,11) = "["
│ │ └── closing_loc: (170,12)-(170,13) = "]"
│ │ ├── closing_loc: (170,12)-(170,13) = "]"
│ │ └── flags: contains_splat
│ ├── locals: [:*]
│ ├── def_keyword_loc: (170,0)-(170,3) = "def"
│ ├── operator_loc: ∅

View File

@ -81,7 +81,8 @@
│ │ │ │ └── @ IntegerNode (location: (12,12)-(12,13))
│ │ │ │ └── flags: decimal
│ │ │ ├── opening_loc: (12,5)-(12,6) = "["
│ │ │ └── closing_loc: (12,13)-(12,14) = "]"
│ │ │ ├── closing_loc: (12,13)-(12,14) = "]"
│ │ │ └── flags: ∅
│ │ └── flags: ∅
│ └── keyword_loc: (12,0)-(12,4) = "next"
├── @ NextNode (location: (14,0)-(17,1))

View File

@ -223,7 +223,8 @@
│ │ │ ├── closing_loc: ∅
│ │ │ └── unescaped: "foo"
│ │ ├── opening_loc: (12,7)-(12,10) = "%i["
│ │ └── closing_loc: (12,13)-(12,14) = "]"
│ │ ├── closing_loc: (12,13)-(12,14) = "]"
│ │ └── flags: ∅
│ └── operator_loc: (12,4)-(12,6) = "=>"
├── @ MatchRequiredNode (location: (13,0)-(13,14))
│ ├── value:
@ -246,7 +247,8 @@
│ │ │ ├── closing_loc: ∅
│ │ │ └── unescaped: "foo"
│ │ ├── opening_loc: (13,7)-(13,10) = "%I["
│ │ └── closing_loc: (13,13)-(13,14) = "]"
│ │ ├── closing_loc: (13,13)-(13,14) = "]"
│ │ └── flags: ∅
│ └── operator_loc: (13,4)-(13,6) = "=>"
├── @ MatchRequiredNode (location: (14,0)-(14,14))
│ ├── value:
@ -270,7 +272,8 @@
│ │ │ ├── closing_loc: ∅
│ │ │ └── unescaped: "foo"
│ │ ├── opening_loc: (14,7)-(14,10) = "%w["
│ │ └── closing_loc: (14,13)-(14,14) = "]"
│ │ ├── closing_loc: (14,13)-(14,14) = "]"
│ │ └── flags: ∅
│ └── operator_loc: (14,4)-(14,6) = "=>"
├── @ MatchRequiredNode (location: (15,0)-(15,14))
│ ├── value:
@ -294,7 +297,8 @@
│ │ │ ├── closing_loc: ∅
│ │ │ └── unescaped: "foo"
│ │ ├── opening_loc: (15,7)-(15,10) = "%W["
│ │ └── closing_loc: (15,13)-(15,14) = "]"
│ │ ├── closing_loc: (15,13)-(15,14) = "]"
│ │ └── flags: ∅
│ └── operator_loc: (15,4)-(15,6) = "=>"
├── @ MatchRequiredNode (location: (16,0)-(16,14))
│ ├── value:
@ -785,7 +789,8 @@
│ │ │ │ ├── closing_loc: ∅
│ │ │ │ └── unescaped: "foo"
│ │ │ ├── opening_loc: (38,7)-(38,10) = "%i["
│ │ │ └── closing_loc: (38,13)-(38,14) = "]"
│ │ │ ├── closing_loc: (38,13)-(38,14) = "]"
│ │ │ └── flags: ∅
│ │ ├── right:
│ │ │ @ ArrayNode (location: (38,18)-(38,25))
│ │ │ ├── elements: (length: 1)
@ -795,7 +800,8 @@
│ │ │ │ ├── closing_loc: ∅
│ │ │ │ └── unescaped: "foo"
│ │ │ ├── opening_loc: (38,18)-(38,21) = "%i["
│ │ │ └── closing_loc: (38,24)-(38,25) = "]"
│ │ │ ├── closing_loc: (38,24)-(38,25) = "]"
│ │ │ └── flags: ∅
│ │ ├── operator_loc: (38,15)-(38,17) = ".."
│ │ └── flags: ∅
│ └── operator_loc: (38,4)-(38,6) = "=>"
@ -822,7 +828,8 @@
│ │ │ │ ├── closing_loc: ∅
│ │ │ │ └── unescaped: "foo"
│ │ │ ├── opening_loc: (39,7)-(39,10) = "%I["
│ │ │ └── closing_loc: (39,13)-(39,14) = "]"
│ │ │ ├── closing_loc: (39,13)-(39,14) = "]"
│ │ │ └── flags: ∅
│ │ ├── right:
│ │ │ @ ArrayNode (location: (39,18)-(39,25))
│ │ │ ├── elements: (length: 1)
@ -832,7 +839,8 @@
│ │ │ │ ├── closing_loc: ∅
│ │ │ │ └── unescaped: "foo"
│ │ │ ├── opening_loc: (39,18)-(39,21) = "%I["
│ │ │ └── closing_loc: (39,24)-(39,25) = "]"
│ │ │ ├── closing_loc: (39,24)-(39,25) = "]"
│ │ │ └── flags: ∅
│ │ ├── operator_loc: (39,15)-(39,17) = ".."
│ │ └── flags: ∅
│ └── operator_loc: (39,4)-(39,6) = "=>"
@ -860,7 +868,8 @@
│ │ │ │ ├── closing_loc: ∅
│ │ │ │ └── unescaped: "foo"
│ │ │ ├── opening_loc: (40,7)-(40,10) = "%w["
│ │ │ └── closing_loc: (40,13)-(40,14) = "]"
│ │ │ ├── closing_loc: (40,13)-(40,14) = "]"
│ │ │ └── flags: ∅
│ │ ├── right:
│ │ │ @ ArrayNode (location: (40,18)-(40,25))
│ │ │ ├── elements: (length: 1)
@ -871,7 +880,8 @@
│ │ │ │ ├── closing_loc: ∅
│ │ │ │ └── unescaped: "foo"
│ │ │ ├── opening_loc: (40,18)-(40,21) = "%w["
│ │ │ └── closing_loc: (40,24)-(40,25) = "]"
│ │ │ ├── closing_loc: (40,24)-(40,25) = "]"
│ │ │ └── flags: ∅
│ │ ├── operator_loc: (40,15)-(40,17) = ".."
│ │ └── flags: ∅
│ └── operator_loc: (40,4)-(40,6) = "=>"
@ -899,7 +909,8 @@
│ │ │ │ ├── closing_loc: ∅
│ │ │ │ └── unescaped: "foo"
│ │ │ ├── opening_loc: (41,7)-(41,10) = "%W["
│ │ │ └── closing_loc: (41,13)-(41,14) = "]"
│ │ │ ├── closing_loc: (41,13)-(41,14) = "]"
│ │ │ └── flags: ∅
│ │ ├── right:
│ │ │ @ ArrayNode (location: (41,18)-(41,25))
│ │ │ ├── elements: (length: 1)
@ -910,7 +921,8 @@
│ │ │ │ ├── closing_loc: ∅
│ │ │ │ └── unescaped: "foo"
│ │ │ ├── opening_loc: (41,18)-(41,21) = "%W["
│ │ │ └── closing_loc: (41,24)-(41,25) = "]"
│ │ │ ├── closing_loc: (41,24)-(41,25) = "]"
│ │ │ └── flags: ∅
│ │ ├── operator_loc: (41,15)-(41,17) = ".."
│ │ └── flags: ∅
│ └── operator_loc: (41,4)-(41,6) = "=>"
@ -2513,7 +2525,8 @@
│ │ │ ├── closing_loc: ∅
│ │ │ └── unescaped: "foo"
│ │ ├── opening_loc: (111,7)-(111,10) = "%i["
│ │ └── closing_loc: (111,13)-(111,14) = "]"
│ │ ├── closing_loc: (111,13)-(111,14) = "]"
│ │ └── flags: ∅
│ └── operator_loc: (111,4)-(111,6) = "in"
├── @ MatchPredicateNode (location: (112,0)-(112,14))
│ ├── value:
@ -2536,7 +2549,8 @@
│ │ │ ├── closing_loc: ∅
│ │ │ └── unescaped: "foo"
│ │ ├── opening_loc: (112,7)-(112,10) = "%I["
│ │ └── closing_loc: (112,13)-(112,14) = "]"
│ │ ├── closing_loc: (112,13)-(112,14) = "]"
│ │ └── flags: ∅
│ └── operator_loc: (112,4)-(112,6) = "in"
├── @ MatchPredicateNode (location: (113,0)-(113,14))
│ ├── value:
@ -2560,7 +2574,8 @@
│ │ │ ├── closing_loc: ∅
│ │ │ └── unescaped: "foo"
│ │ ├── opening_loc: (113,7)-(113,10) = "%w["
│ │ └── closing_loc: (113,13)-(113,14) = "]"
│ │ ├── closing_loc: (113,13)-(113,14) = "]"
│ │ └── flags: ∅
│ └── operator_loc: (113,4)-(113,6) = "in"
├── @ MatchPredicateNode (location: (114,0)-(114,14))
│ ├── value:
@ -2584,7 +2599,8 @@
│ │ │ ├── closing_loc: ∅
│ │ │ └── unescaped: "foo"
│ │ ├── opening_loc: (114,7)-(114,10) = "%W["
│ │ └── closing_loc: (114,13)-(114,14) = "]"
│ │ ├── closing_loc: (114,13)-(114,14) = "]"
│ │ └── flags: ∅
│ └── operator_loc: (114,4)-(114,6) = "in"
├── @ MatchPredicateNode (location: (115,0)-(115,14))
│ ├── value:
@ -3077,7 +3093,8 @@
│ │ │ │ ├── closing_loc: ∅
│ │ │ │ └── unescaped: "foo"
│ │ │ ├── opening_loc: (138,13)-(138,16) = "%i["
│ │ │ └── closing_loc: (138,19)-(138,20) = "]"
│ │ │ ├── closing_loc: (138,19)-(138,20) = "]"
│ │ │ └── flags: ∅
│ │ ├── statements: ∅
│ │ ├── in_loc: (138,10)-(138,12) = "in"
│ │ └── then_loc: (138,21)-(138,25) = "then"
@ -3107,7 +3124,8 @@
│ │ │ │ ├── closing_loc: ∅
│ │ │ │ └── unescaped: "foo"
│ │ │ ├── opening_loc: (139,13)-(139,16) = "%I["
│ │ │ └── closing_loc: (139,19)-(139,20) = "]"
│ │ │ ├── closing_loc: (139,19)-(139,20) = "]"
│ │ │ └── flags: ∅
│ │ ├── statements: ∅
│ │ ├── in_loc: (139,10)-(139,12) = "in"
│ │ └── then_loc: (139,21)-(139,25) = "then"
@ -3138,7 +3156,8 @@
│ │ │ │ ├── closing_loc: ∅
│ │ │ │ └── unescaped: "foo"
│ │ │ ├── opening_loc: (140,13)-(140,16) = "%w["
│ │ │ └── closing_loc: (140,19)-(140,20) = "]"
│ │ │ ├── closing_loc: (140,19)-(140,20) = "]"
│ │ │ └── flags: ∅
│ │ ├── statements: ∅
│ │ ├── in_loc: (140,10)-(140,12) = "in"
│ │ └── then_loc: (140,21)-(140,25) = "then"
@ -3169,7 +3188,8 @@
│ │ │ │ ├── closing_loc: ∅
│ │ │ │ └── unescaped: "foo"
│ │ │ ├── opening_loc: (141,13)-(141,16) = "%W["
│ │ │ └── closing_loc: (141,19)-(141,20) = "]"
│ │ │ ├── closing_loc: (141,19)-(141,20) = "]"
│ │ │ └── flags: ∅
│ │ ├── statements: ∅
│ │ ├── in_loc: (141,10)-(141,12) = "in"
│ │ └── then_loc: (141,21)-(141,25) = "then"
@ -3886,7 +3906,8 @@
│ │ │ │ │ ├── closing_loc: ∅
│ │ │ │ │ └── unescaped: "foo"
│ │ │ │ ├── opening_loc: (165,13)-(165,16) = "%i["
│ │ │ │ └── closing_loc: (165,19)-(165,20) = "]"
│ │ │ │ ├── closing_loc: (165,19)-(165,20) = "]"
│ │ │ │ └── flags: ∅
│ │ │ ├── consequent: ∅
│ │ │ └── end_keyword_loc: ∅
│ │ ├── statements: ∅
@ -3928,7 +3949,8 @@
│ │ │ │ │ ├── closing_loc: ∅
│ │ │ │ │ └── unescaped: "foo"
│ │ │ │ ├── opening_loc: (166,13)-(166,16) = "%I["
│ │ │ │ └── closing_loc: (166,19)-(166,20) = "]"
│ │ │ │ ├── closing_loc: (166,19)-(166,20) = "]"
│ │ │ │ └── flags: ∅
│ │ │ ├── consequent: ∅
│ │ │ └── end_keyword_loc: ∅
│ │ ├── statements: ∅
@ -3971,7 +3993,8 @@
│ │ │ │ │ ├── closing_loc: ∅
│ │ │ │ │ └── unescaped: "foo"
│ │ │ │ ├── opening_loc: (167,13)-(167,16) = "%w["
│ │ │ │ └── closing_loc: (167,19)-(167,20) = "]"
│ │ │ │ ├── closing_loc: (167,19)-(167,20) = "]"
│ │ │ │ └── flags: ∅
│ │ │ ├── consequent: ∅
│ │ │ └── end_keyword_loc: ∅
│ │ ├── statements: ∅
@ -4014,7 +4037,8 @@
│ │ │ │ │ ├── closing_loc: ∅
│ │ │ │ │ └── unescaped: "foo"
│ │ │ │ ├── opening_loc: (168,13)-(168,16) = "%W["
│ │ │ │ └── closing_loc: (168,19)-(168,20) = "]"
│ │ │ │ ├── closing_loc: (168,19)-(168,20) = "]"
│ │ │ │ └── flags: ∅
│ │ │ ├── consequent: ∅
│ │ │ └── end_keyword_loc: ∅
│ │ ├── statements: ∅

View File

@ -124,7 +124,8 @@
│ │ ├── name: :foo
│ │ └── depth: 0
│ ├── opening_loc: (11,0)-(11,1) = "["
│ └── closing_loc: (11,26)-(11,27) = "]"
│ ├── closing_loc: (11,26)-(11,27) = "]"
│ └── flags: ∅
├── @ RegularExpressionNode (location: (13,0)-(13,6))
│ ├── opening_loc: (13,0)-(13,1) = "/"
│ ├── content_loc: (13,1)-(13,4) = "abc"

View File

@ -93,7 +93,8 @@
│ │ │ └── @ IntegerNode (location: (14,14)-(14,15))
│ │ │ └── flags: decimal
│ │ ├── opening_loc: (14,7)-(14,8) = "["
│ │ └── closing_loc: (14,15)-(14,16) = "]"
│ │ ├── closing_loc: (14,15)-(14,16) = "]"
│ │ └── flags: ∅
│ └── flags: ∅
├── @ ReturnNode (location: (16,0)-(19,1))
│ ├── keyword_loc: (16,0)-(16,6) = "return"

View File

@ -6,7 +6,8 @@
├── @ ArrayNode (location: (1,0)-(4,1))
│ ├── elements: (length: 0)
│ ├── opening_loc: (1,0)-(1,3) = "%I["
│ └── closing_loc: (4,0)-(4,1) = "]"
│ ├── closing_loc: (4,0)-(4,1) = "]"
│ └── flags: ∅
├── @ ArrayNode (location: (6,0)-(9,1))
│ ├── elements: (length: 2)
│ │ ├── @ SymbolNode (location: (7,0)-(7,5))
@ -20,11 +21,13 @@
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "line3"
│ ├── opening_loc: (6,0)-(6,3) = "%I["
│ └── closing_loc: (9,0)-(9,1) = "]"
│ ├── closing_loc: (9,0)-(9,1) = "]"
│ └── flags: ∅
├── @ ArrayNode (location: (11,0)-(14,1))
│ ├── elements: (length: 0)
│ ├── opening_loc: (11,0)-(11,3) = "%W["
│ └── closing_loc: (14,0)-(14,1) = "]"
│ ├── closing_loc: (14,0)-(14,1) = "]"
│ └── flags: ∅
├── @ ArrayNode (location: (16,0)-(19,1))
│ ├── elements: (length: 2)
│ │ ├── @ StringNode (location: (17,0)-(17,5))
@ -40,11 +43,13 @@
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "line3"
│ ├── opening_loc: (16,0)-(16,3) = "%W["
│ └── closing_loc: (19,0)-(19,1) = "]"
│ ├── closing_loc: (19,0)-(19,1) = "]"
│ └── flags: ∅
├── @ ArrayNode (location: (21,0)-(24,1))
│ ├── elements: (length: 0)
│ ├── opening_loc: (21,0)-(21,3) = "%i["
│ └── closing_loc: (24,0)-(24,1) = "]"
│ ├── closing_loc: (24,0)-(24,1) = "]"
│ └── flags: ∅
├── @ ArrayNode (location: (26,0)-(29,1))
│ ├── elements: (length: 2)
│ │ ├── @ SymbolNode (location: (27,0)-(27,5))
@ -58,7 +63,8 @@
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "line3"
│ ├── opening_loc: (26,0)-(26,3) = "%i["
│ └── closing_loc: (29,0)-(29,1) = "]"
│ ├── closing_loc: (29,0)-(29,1) = "]"
│ └── flags: ∅
├── @ RegularExpressionNode (location: (31,0)-(34,1))
│ ├── opening_loc: (31,0)-(31,3) = "%r["
│ ├── content_loc: (31,3)-(34,0) = "\n\n\n"
@ -68,7 +74,8 @@
├── @ ArrayNode (location: (36,0)-(39,1))
│ ├── elements: (length: 0)
│ ├── opening_loc: (36,0)-(36,3) = "%w["
│ └── closing_loc: (39,0)-(39,1) = "]"
│ ├── closing_loc: (39,0)-(39,1) = "]"
│ └── flags: ∅
├── @ ArrayNode (location: (41,0)-(44,1))
│ ├── elements: (length: 2)
│ │ ├── @ StringNode (location: (42,0)-(42,5))
@ -84,7 +91,8 @@
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "line3"
│ ├── opening_loc: (41,0)-(41,3) = "%w["
│ └── closing_loc: (44,0)-(44,1) = "]"
│ ├── closing_loc: (44,0)-(44,1) = "]"
│ └── flags: ∅
├── @ ArrayNode (location: (46,0)-(49,1))
│ ├── elements: (length: 2)
│ │ ├── @ SymbolNode (location: (47,0)-(47,6))
@ -98,7 +106,8 @@
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "line3"
│ ├── opening_loc: (46,0)-(46,1) = "["
│ └── closing_loc: (49,0)-(49,1) = "]"
│ ├── closing_loc: (49,0)-(49,1) = "]"
│ └── flags: ∅
├── @ ClassNode (location: (51,0)-(56,3))
│ ├── locals: []
│ ├── class_keyword_loc: (51,0)-(51,5) = "class"
@ -277,7 +286,8 @@
│ │ │ │ ├── closing_loc: ∅
│ │ │ │ └── unescaped: "line4"
│ │ │ ├── opening_loc: (75,6)-(75,7) = "["
│ │ │ └── closing_loc: (78,2)-(78,3) = "]"
│ │ │ ├── closing_loc: (78,2)-(78,3) = "]"
│ │ │ └── flags: ∅
│ │ └── operator_loc: (75,4)-(75,5) = "="
│ ├── end_keyword_loc: (79,0)-(79,3) = "end"
│ └── name: :X

View File

@ -16,4 +16,5 @@
│ │ └── flags: decimal
│ └── operator_loc: (1,3)-(1,5) = "=>"
├── opening_loc: (1,0)-(1,1) = "["
└── closing_loc: (1,7)-(1,8) = "]"
├── closing_loc: (1,7)-(1,8) = "]"
└── flags: ∅

View File

@ -18,4 +18,5 @@
│ │ └── flags: decimal
│ └── operator_loc: (1,6)-(1,8) = "=>"
├── opening_loc: (1,0)-(1,1) = "["
└── closing_loc: (1,10)-(1,11) = "]"
├── closing_loc: (1,10)-(1,11) = "]"
└── flags: ∅

View File

@ -18,6 +18,7 @@
│ │ ├── closing_loc: (3,2)-(3,3) = "'"
│ │ └── unescaped: "b"
│ ├── opening_loc: (1,0)-(1,1) = "["
│ └── closing_loc: (3,3)-(3,4) = "]"
│ ├── closing_loc: (3,3)-(3,4) = "]"
│ └── flags: ∅
└── @ IntegerNode (location: (4,0)-(4,1))
└── flags: decimal

View File

@ -8,7 +8,8 @@
│ │ @ ArrayNode (location: (1,0)-(1,4))
│ │ ├── elements: (length: 0)
│ │ ├── opening_loc: (1,0)-(1,3) = "%w["
│ │ └── closing_loc: (1,3)-(1,4) = "]"
│ │ ├── closing_loc: (1,3)-(1,4) = "]"
│ │ └── flags: ∅
│ ├── call_operator_loc: (1,4)-(1,5) = "."
│ ├── message_loc: (1,5)-(1,6) = "b"
│ ├── opening_loc: ∅
@ -22,7 +23,8 @@
│ @ ArrayNode (location: (3,0)-(3,2))
│ ├── elements: (length: 0)
│ ├── opening_loc: (3,0)-(3,1) = "["
│ └── closing_loc: (3,1)-(3,2) = "]"
│ ├── closing_loc: (3,1)-(3,2) = "]"
│ └── flags: ∅
├── call_operator_loc: (3,2)-(3,3) = "."
├── message_loc: (3,3)-(3,4) = "b"
├── opening_loc: ∅

View File

@ -28,7 +28,8 @@
│ │ │ │ └── @ IntegerNode (location: (1,6)-(1,7))
│ │ │ │ └── flags: decimal
│ │ │ ├── opening_loc: (1,2)-(1,3) = "["
│ │ │ └── closing_loc: (1,7)-(1,8) = "]"
│ │ │ ├── closing_loc: (1,7)-(1,8) = "]"
│ │ │ └── flags: ∅
│ │ └── @ IntegerNode (location: (1,12)-(1,13))
│ │ └── flags: decimal
│ └── flags: ∅

View File

@ -16,7 +16,8 @@
│ │ └── @ IntegerNode (location: (1,10)-(1,11))
│ │ └── flags: decimal
│ ├── opening_loc: (1,0)-(1,1) = "["
│ └── closing_loc: (1,11)-(1,12) = "]"
│ ├── closing_loc: (1,11)-(1,12) = "]"
│ └── flags: ∅
├── call_operator_loc: ∅
├── message_loc: (1,12)-(1,24) = "[from .. to]"
├── opening_loc: (1,12)-(1,13) = "["
@ -69,7 +70,8 @@
│ │ │ ├── closing_loc: (1,40)-(1,41) = "\""
│ │ │ └── unescaped: "c"
│ │ ├── opening_loc: (1,27)-(1,28) = "["
│ │ └── closing_loc: (1,41)-(1,42) = "]"
│ │ ├── closing_loc: (1,41)-(1,42) = "]"
│ │ └── flags: ∅
│ └── flags: ∅
├── closing_loc: (1,23)-(1,24) = "]"
├── block: ∅

View File

@ -48,7 +48,8 @@
│ │ │ ├── name: :b
│ │ │ └── depth: 0
│ │ ├── opening_loc: (1,16)-(1,17) = "["
│ │ └── closing_loc: (1,21)-(1,22) = "]"
│ │ ├── closing_loc: (1,21)-(1,22) = "]"
│ │ └── flags: ∅
│ ├── opening_loc: (1,2)-(1,3) = "{"
│ └── closing_loc: (1,23)-(1,24) = "}"
├── flags: ∅

View File

@ -58,7 +58,8 @@
│ │ │ ├── name: :c
│ │ │ └── depth: 0
│ │ ├── opening_loc: (1,24)-(1,25) = "["
│ │ └── closing_loc: (1,32)-(1,33) = "]"
│ │ ├── closing_loc: (1,32)-(1,33) = "]"
│ │ └── flags: ∅
│ ├── opening_loc: (1,2)-(1,3) = "{"
│ └── closing_loc: (1,34)-(1,35) = "}"
├── flags: ∅

View File

@ -65,7 +65,8 @@
│ │ │ ├── name: :d
│ │ │ └── depth: 0
│ │ ├── opening_loc: (1,28)-(1,29) = "["
│ │ └── closing_loc: (1,39)-(1,40) = "]"
│ │ ├── closing_loc: (1,39)-(1,40) = "]"
│ │ └── flags: ∅
│ ├── opening_loc: (1,2)-(1,3) = "{"
│ └── closing_loc: (1,41)-(1,42) = "}"
├── flags: ∅

View File

@ -16,5 +16,6 @@
│ @ ArrayNode (location: (4,9)-(4,11))
│ ├── elements: (length: 0)
│ ├── opening_loc: (4,9)-(4,10) = "["
│ └── closing_loc: (4,10)-(4,11) = "]"
│ ├── closing_loc: (4,10)-(4,11) = "]"
│ └── flags: ∅
└── operator_loc: (4,5)-(4,8) = "and"

View File

@ -20,6 +20,7 @@
│ │ @ ArrayNode (location: (1,9)-(1,11))
│ │ ├── elements: (length: 0)
│ │ ├── opening_loc: (1,9)-(1,10) = "["
│ │ └── closing_loc: (1,10)-(1,11) = "]"
│ │ ├── closing_loc: (1,10)-(1,11) = "]"
│ │ └── flags: ∅
│ └── operator_loc: ∅
└── closing_loc: (1,12)-(1,13) = "}"

View File

@ -26,7 +26,8 @@
│ │ │ ├── closing_loc: ∅
│ │ │ └── unescaped: "c"
│ │ ├── opening_loc: (1,5)-(1,6) = "["
│ │ └── closing_loc: (1,12)-(1,13) = "]"
│ │ ├── closing_loc: (1,12)-(1,13) = "]"
│ │ └── flags: ∅
│ └── flags: ∅
├── closing_loc: ∅
├── block: ∅

View File

@ -31,7 +31,8 @@
│ │ │ ├── flags: ∅
│ │ │ └── name: :b
│ │ ├── opening_loc: (1,2)-(1,3) = "["
│ │ └── closing_loc: (1,18)-(1,19) = "]"
│ │ ├── closing_loc: (1,18)-(1,19) = "]"
│ │ └── flags: ∅
│ └── flags: ∅
├── closing_loc: ∅
├── block: ∅

View File

@ -26,7 +26,8 @@
│ │ │ │ └── closing_loc: (1,6)-(1,7) = ")"
│ │ │ └── body: ∅
│ │ ├── opening_loc: (1,2)-(1,3) = "["
│ │ └── closing_loc: (1,10)-(1,11) = "]"
│ │ ├── closing_loc: (1,10)-(1,11) = "]"
│ │ └── flags: ∅
│ └── flags: ∅
├── closing_loc: ∅
├── block:

View File

@ -32,7 +32,8 @@
│ │ │ │ └── flags: decimal
│ │ │ └── operator_loc: (1,10)-(1,12) = "=>"
│ │ ├── opening_loc: (1,2)-(1,3) = "["
│ │ └── closing_loc: (1,14)-(1,15) = "]"
│ │ ├── closing_loc: (1,14)-(1,15) = "]"
│ │ └── flags: ∅
│ └── flags: ∅
├── closing_loc: (1,15)-(1,16) = ")"
├── block: ∅

View File

@ -57,7 +57,8 @@
│ │ │ │ ├── closing_loc: ∅
│ │ │ │ └── unescaped: "b"
│ │ │ ├── opening_loc: (6,3)-(6,6) = "%I["
│ │ │ └── closing_loc: (6,9)-(6,10) = "]"
│ │ │ ├── closing_loc: (6,9)-(6,10) = "]"
│ │ │ └── flags: ∅
│ │ ├── statements: ∅
│ │ ├── in_loc: (6,0)-(6,2) = "in"
│ │ └── then_loc: ∅
@ -89,7 +90,8 @@
│ │ │ │ ├── closing_loc: ∅
│ │ │ │ └── unescaped: "b"
│ │ │ ├── opening_loc: (10,3)-(10,6) = "%W["
│ │ │ └── closing_loc: (10,9)-(10,10) = "]"
│ │ │ ├── closing_loc: (10,9)-(10,10) = "]"
│ │ │ └── flags: ∅
│ │ ├── statements: ∅
│ │ ├── in_loc: (10,0)-(10,2) = "in"
│ │ └── then_loc: ∅
@ -119,7 +121,8 @@
│ │ │ │ ├── closing_loc: ∅
│ │ │ │ └── unescaped: "b"
│ │ │ ├── opening_loc: (14,3)-(14,6) = "%i["
│ │ │ └── closing_loc: (14,9)-(14,10) = "]"
│ │ │ ├── closing_loc: (14,9)-(14,10) = "]"
│ │ │ └── flags: ∅
│ │ ├── statements: ∅
│ │ ├── in_loc: (14,0)-(14,2) = "in"
│ │ └── then_loc: ∅
@ -151,7 +154,8 @@
│ │ │ │ ├── closing_loc: ∅
│ │ │ │ └── unescaped: "b"
│ │ │ ├── opening_loc: (18,3)-(18,6) = "%w["
│ │ │ └── closing_loc: (18,9)-(18,10) = "]"
│ │ │ ├── closing_loc: (18,9)-(18,10) = "]"
│ │ │ └── flags: ∅
│ │ ├── statements: ∅
│ │ ├── in_loc: (18,0)-(18,2) = "in"
│ │ └── then_loc: ∅

View File

@ -18,7 +18,8 @@
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "b"
│ ├── opening_loc: (1,5)-(1,6) = "["
│ └── closing_loc: (1,12)-(1,13) = "]"
│ ├── closing_loc: (1,12)-(1,13) = "]"
│ └── flags: ∅
├── conditions: (length: 1)
│ └── @ InNode (location: (2,0)-(2,25))
│ ├── pattern:

View File

@ -18,7 +18,8 @@
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "b"
│ ├── opening_loc: (1,5)-(1,6) = "["
│ └── closing_loc: (1,12)-(1,13) = "]"
│ ├── closing_loc: (1,12)-(1,13) = "]"
│ └── flags: ∅
├── conditions: (length: 1)
│ └── @ InNode (location: (2,0)-(2,25))
│ ├── pattern:

View File

@ -50,7 +50,8 @@
│ │ │ ├── name: :b
│ │ │ └── depth: 0
│ │ ├── opening_loc: (1,17)-(1,18) = "["
│ │ └── closing_loc: (1,22)-(1,23) = "]"
│ │ ├── closing_loc: (1,22)-(1,23) = "]"
│ │ └── flags: ∅
│ └── flags: ∅
├── closing_loc: ∅
├── block: ∅

View File

@ -12,7 +12,8 @@
│ │ ├── closing_loc: (2,0)-(2,1) = "\""
│ │ └── unescaped: " some text\n"
│ ├── opening_loc: (1,0)-(1,1) = "["
│ └── closing_loc: (2,2)-(2,3) = "]"
│ ├── closing_loc: (2,2)-(2,3) = "]"
│ └── flags: ∅
└── @ ArrayNode (location: (4,0)-(7,1))
├── elements: (length: 1)
│ └── @ StringNode (location: (4,1)-(4,8))
@ -22,4 +23,5 @@
│ ├── closing_loc: (6,0)-(7,0) = "FILE\n"
│ └── unescaped: " some text\n"
├── opening_loc: (4,0)-(4,1) = "["
└── closing_loc: (7,0)-(7,1) = "]"
├── closing_loc: (7,0)-(7,1) = "]"
└── flags: ∅

View File

@ -36,4 +36,5 @@
│ └── @ IntegerNode (location: (7,0)-(7,1))
│ └── flags: decimal
├── opening_loc: (1,0)-(1,1) = "["
└── closing_loc: (7,1)-(7,2) = "]"
├── closing_loc: (7,1)-(7,2) = "]"
└── flags: ∅

View File

@ -16,6 +16,7 @@
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "b"
│ ├── opening_loc: (1,0)-(1,3) = "%I("
│ └── closing_loc: (4,0)-(4,1) = ")"
│ ├── closing_loc: (4,0)-(4,1) = ")"
│ └── flags: ∅
└── @ IntegerNode (location: (5,0)-(5,1))
└── flags: decimal

View File

@ -18,6 +18,7 @@
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "b"
│ ├── opening_loc: (1,0)-(1,3) = "%W("
│ └── closing_loc: (4,0)-(4,1) = ")"
│ ├── closing_loc: (4,0)-(4,1) = ")"
│ └── flags: ∅
└── @ IntegerNode (location: (5,0)-(5,1))
└── flags: decimal

View File

@ -44,5 +44,6 @@
│ │ ├── flags: variable_call
│ │ └── name: :d
│ ├── opening_loc: ∅
│ └── closing_loc: ∅
│ ├── closing_loc: ∅
│ └── flags: contains_splat
└── operator_loc: (1,2)-(1,3) = "="

View File

@ -37,4 +37,5 @@
│ └── @ IntegerNode (location: (1,13)-(1,14))
│ └── flags: decimal
├── opening_loc: ∅
└── closing_loc: ∅
├── closing_loc: ∅
└── flags: ∅

View File

@ -30,4 +30,5 @@
│ └── @ IntegerNode (location: (1,14)-(1,15))
│ └── flags: decimal
├── opening_loc: ∅
└── closing_loc: ∅
├── closing_loc: ∅
└── flags: ∅

View File

@ -26,4 +26,5 @@
│ └── @ IntegerNode (location: (1,11)-(1,12))
│ └── flags: decimal
├── opening_loc: ∅
└── closing_loc: ∅
├── closing_loc: ∅
└── flags: ∅

View File

@ -16,6 +16,7 @@
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "b"
│ ├── opening_loc: (1,0)-(1,3) = "%i("
│ └── closing_loc: (4,0)-(4,1) = ")"
│ ├── closing_loc: (4,0)-(4,1) = ")"
│ └── flags: ∅
└── @ IntegerNode (location: (5,0)-(5,1))
└── flags: decimal

View File

@ -18,6 +18,7 @@
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "b"
│ ├── opening_loc: (1,0)-(1,3) = "%w("
│ └── closing_loc: (4,0)-(4,1) = ")"
│ ├── closing_loc: (4,0)-(4,1) = ")"
│ └── flags: ∅
└── @ IntegerNode (location: (5,0)-(5,1))
└── flags: decimal

View File

@ -14,7 +14,8 @@
│ │ └── @ IntegerNode (location: (1,12)-(1,13))
│ │ └── flags: decimal
│ ├── opening_loc: (1,5)-(1,6) = "["
│ └── closing_loc: (1,13)-(1,14) = "]"
│ ├── closing_loc: (1,13)-(1,14) = "]"
│ └── flags: ∅
├── conditions: (length: 1)
│ └── @ InNode (location: (2,0)-(3,6))
│ ├── pattern:

View File

@ -56,7 +56,8 @@
│ │ │ ├── name: :rest
│ │ │ └── depth: 0
│ │ ├── opening_loc: (3,2)-(3,3) = "["
│ │ └── closing_loc: (3,10)-(3,11) = "]"
│ │ ├── closing_loc: (3,10)-(3,11) = "]"
│ │ └── flags: ∅
│ ├── in_loc: (2,0)-(2,2) = "in"
│ └── then_loc: ∅
├── consequent: ∅

View File

@ -50,7 +50,8 @@
│ │ │ ├── name: :a
│ │ │ └── depth: 0
│ │ ├── opening_loc: (3,2)-(3,3) = "["
│ │ └── closing_loc: (3,4)-(3,5) = "]"
│ │ ├── closing_loc: (3,4)-(3,5) = "]"
│ │ └── flags: ∅
│ ├── in_loc: (2,0)-(2,2) = "in"
│ └── then_loc: ∅
├── consequent: ∅

View File

@ -48,4 +48,5 @@
│ ├── closing_loc: ∅
│ └── unescaped: "iy"
├── opening_loc: (1,0)-(1,3) = "%W("
└── closing_loc: (5,10)-(5,11) = ")"
├── closing_loc: (5,10)-(5,11) = ")"
└── flags: ∅

View File

@ -46,4 +46,5 @@
│ ├── closing_loc: ∅
│ └── unescaped: "5"
├── opening_loc: (1,0)-(1,3) = "%W("
└── closing_loc: (4,10)-(4,11) = ")"
├── closing_loc: (4,10)-(4,11) = ")"
└── flags: ∅

View File

@ -6,4 +6,5 @@
└── @ ArrayNode (location: (1,0)-(1,5))
├── elements: (length: 0)
├── opening_loc: (1,0)-(1,3) = "%W("
└── closing_loc: (1,4)-(1,5) = ")"
├── closing_loc: (1,4)-(1,5) = ")"
└── flags: ∅

View File

@ -21,4 +21,5 @@
│ ├── closing_loc: ∅
│ └── unescaped: "c"
├── opening_loc: (1,0)-(1,3) = "%I("
└── closing_loc: (1,8)-(1,9) = ")"
├── closing_loc: (1,8)-(1,9) = ")"
└── flags: ∅

View File

@ -6,4 +6,5 @@
└── @ ArrayNode (location: (1,0)-(1,4))
├── elements: (length: 0)
├── opening_loc: (1,0)-(1,3) = "%I("
└── closing_loc: (1,3)-(1,4) = ")"
├── closing_loc: (1,3)-(1,4) = ")"
└── flags: ∅

View File

@ -6,4 +6,5 @@
└── @ ArrayNode (location: (1,0)-(1,5))
├── elements: (length: 0)
├── opening_loc: (1,0)-(1,3) = "%I("
└── closing_loc: (1,4)-(1,5) = ")"
├── closing_loc: (1,4)-(1,5) = ")"
└── flags: ∅

View File

@ -49,4 +49,5 @@
│ ├── closing_loc: ∅
│ └── unescaped: "c"
├── opening_loc: (1,0)-(1,3) = "%I("
└── closing_loc: (1,14)-(1,15) = ")"
├── closing_loc: (1,14)-(1,15) = ")"
└── flags: ∅

View File

@ -6,4 +6,5 @@
└── @ ArrayNode (location: (1,0)-(1,4))
├── elements: (length: 0)
├── opening_loc: (1,0)-(1,3) = "%w("
└── closing_loc: (1,3)-(1,4) = ")"
├── closing_loc: (1,3)-(1,4) = ")"
└── flags: ∅

View File

@ -20,4 +20,5 @@
│ @ IntegerNode (location: (1,9)-(1,10))
│ └── flags: decimal
├── opening_loc: (1,0)-(1,1) = "["
└── closing_loc: (1,12)-(1,13) = "]"
├── closing_loc: (1,12)-(1,13) = "]"
└── flags: ∅

View File

@ -46,4 +46,5 @@
│ │ └── closing_loc: (1,11)-(1,12) = "}"
│ └── closing_loc: ∅
├── opening_loc: (1,0)-(1,3) = "%I["
└── closing_loc: (1,12)-(1,13) = "]"
├── closing_loc: (1,12)-(1,13) = "]"
└── flags: ∅

View File

@ -21,4 +21,5 @@
│ ├── closing_loc: ∅
│ └── unescaped: "c"
├── opening_loc: (1,0)-(1,3) = "%i("
└── closing_loc: (1,8)-(1,9) = ")"
├── closing_loc: (1,8)-(1,9) = ")"
└── flags: ∅

View File

@ -6,4 +6,5 @@
└── @ ArrayNode (location: (1,0)-(1,4))
├── elements: (length: 0)
├── opening_loc: (1,0)-(1,3) = "%i("
└── closing_loc: (1,3)-(1,4) = ")"
├── closing_loc: (1,3)-(1,4) = ")"
└── flags: ∅

View File

@ -6,4 +6,5 @@
└── @ ArrayNode (location: (1,0)-(1,5))
├── elements: (length: 0)
├── opening_loc: (1,0)-(1,3) = "%i("
└── closing_loc: (1,4)-(1,5) = ")"
├── closing_loc: (1,4)-(1,5) = ")"
└── flags: ∅

View File

@ -21,4 +21,5 @@
│ ├── closing_loc: ∅
│ └── unescaped: "c"
├── opening_loc: (1,0)-(1,3) = "%i("
└── closing_loc: (1,14)-(1,15) = ")"
├── closing_loc: (1,14)-(1,15) = ")"
└── flags: ∅

View File

@ -24,4 +24,5 @@
│ │ └── unescaped: "b"
│ └── closing_loc: ∅
├── opening_loc: (1,0)-(1,3) = "%W("
└── closing_loc: (1,8)-(1,9) = ")"
├── closing_loc: (1,8)-(1,9) = ")"
└── flags: ∅

View File

@ -192,7 +192,8 @@
│ │ │ │ ├── closing_loc: ∅
│ │ │ │ └── unescaped: "j"
│ │ │ ├── opening_loc: (28,9)-(28,12) = "%w["
│ │ │ └── closing_loc: (31,1)-(31,2) = "]"
│ │ │ ├── closing_loc: (31,1)-(31,2) = "]"
│ │ │ └── flags: ∅
│ │ └── flags: ∅
│ ├── closing_loc: ∅
│ ├── block: ∅
@ -231,7 +232,8 @@
│ │ │ │ │ └── unescaped: "l"
│ │ │ │ └── closing_loc: ∅
│ │ │ ├── opening_loc: (35,9)-(35,12) = "%W["
│ │ │ └── closing_loc: (38,1)-(38,2) = "]"
│ │ │ ├── closing_loc: (38,1)-(38,2) = "]"
│ │ │ └── flags: ∅
│ │ └── flags: ∅
│ ├── closing_loc: ∅
│ ├── block: ∅
@ -264,7 +266,8 @@
│ │ │ │ ├── closing_loc: ∅
│ │ │ │ └── unescaped: "n"
│ │ │ ├── opening_loc: (41,9)-(41,12) = "%i["
│ │ │ └── closing_loc: (44,1)-(44,2) = "]"
│ │ │ ├── closing_loc: (44,1)-(44,2) = "]"
│ │ │ └── flags: ∅
│ │ └── flags: ∅
│ ├── closing_loc: ∅
│ ├── block: ∅
@ -302,7 +305,8 @@
│ │ │ │ │ └── unescaped: "p"
│ │ │ │ └── closing_loc: ∅
│ │ │ ├── opening_loc: (48,9)-(48,12) = "%I["
│ │ │ └── closing_loc: (51,1)-(51,2) = "]"
│ │ │ ├── closing_loc: (51,1)-(51,2) = "]"
│ │ │ └── flags: ∅
│ │ └── flags: ∅
│ ├── closing_loc: ∅
│ ├── block: ∅

View File

@ -78,7 +78,8 @@
├── @ ArrayNode (location: (25,0)-(25,8))
│ ├── elements: (length: 0)
│ ├── opening_loc: (25,0)-(25,3) = "%w{"
│ └── closing_loc: (25,7)-(25,8) = "}"
│ ├── closing_loc: (25,7)-(25,8) = "}"
│ └── flags: ∅
├── @ StringNode (location: (27,0)-(27,6))
│ ├── flags: ∅
│ ├── opening_loc: (27,0)-(27,2) = "%/"
@ -263,7 +264,8 @@
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "c"
│ ├── opening_loc: (59,0)-(59,3) = "%w["
│ └── closing_loc: (59,8)-(59,9) = "]"
│ ├── closing_loc: (59,8)-(59,9) = "]"
│ └── flags: ∅
├── @ ArrayNode (location: (61,0)-(61,17))
│ ├── elements: (length: 3)
│ │ ├── @ StringNode (location: (61,3)-(61,6))
@ -285,7 +287,8 @@
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "c[]"
│ ├── opening_loc: (61,0)-(61,3) = "%w["
│ └── closing_loc: (61,16)-(61,17) = "]"
│ ├── closing_loc: (61,16)-(61,17) = "]"
│ └── flags: ∅
├── @ ArrayNode (location: (63,0)-(63,18))
│ ├── elements: (length: 2)
│ │ ├── @ StringNode (location: (63,3)-(63,11))
@ -301,7 +304,8 @@
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "\\\#{1}"
│ ├── opening_loc: (63,0)-(63,3) = "%w["
│ └── closing_loc: (63,17)-(63,18) = "]"
│ ├── closing_loc: (63,17)-(63,18) = "]"
│ └── flags: ∅
├── @ ArrayNode (location: (65,0)-(65,16))
│ ├── elements: (length: 2)
│ │ ├── @ StringNode (location: (65,3)-(65,11))
@ -317,7 +321,8 @@
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "baz"
│ ├── opening_loc: (65,0)-(65,3) = "%w["
│ └── closing_loc: (65,15)-(65,16) = "]"
│ ├── closing_loc: (65,15)-(65,16) = "]"
│ └── flags: ∅
├── @ ArrayNode (location: (67,0)-(67,14))
│ ├── elements: (length: 3)
│ │ ├── @ StringNode (location: (67,3)-(67,4))
@ -365,7 +370,8 @@
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "e"
│ ├── opening_loc: (67,0)-(67,3) = "%W["
│ └── closing_loc: (67,13)-(67,14) = "]"
│ ├── closing_loc: (67,13)-(67,14) = "]"
│ └── flags: ∅
├── @ ArrayNode (location: (69,0)-(69,9))
│ ├── elements: (length: 3)
│ │ ├── @ StringNode (location: (69,3)-(69,4))
@ -387,7 +393,8 @@
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "c"
│ ├── opening_loc: (69,0)-(69,3) = "%W["
│ └── closing_loc: (69,8)-(69,9) = "]"
│ ├── closing_loc: (69,8)-(69,9) = "]"
│ └── flags: ∅
├── @ ArrayNode (location: (71,0)-(75,1))
│ ├── elements: (length: 3)
│ │ ├── @ StringNode (location: (72,2)-(72,3))
@ -409,7 +416,8 @@
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "c"
│ ├── opening_loc: (71,0)-(71,3) = "%w["
│ └── closing_loc: (75,0)-(75,1) = "]"
│ ├── closing_loc: (75,0)-(75,1) = "]"
│ └── flags: ∅
├── @ StringNode (location: (77,0)-(77,15))
│ ├── flags: ∅
│ ├── opening_loc: (77,0)-(77,1) = "'"

View File

@ -69,7 +69,8 @@
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "ρ"
│ ├── opening_loc: (7,0)-(7,1) = "["
│ └── closing_loc: (7,19)-(7,20) = "]"
│ ├── closing_loc: (7,19)-(7,20) = "]"
│ └── flags: ∅
├── @ SymbolNode (location: (9,0)-(9,3))
│ ├── opening_loc: (9,0)-(9,1) = ":"
│ ├── value_loc: (9,1)-(9,3) = "-@"
@ -134,7 +135,8 @@
│ │ @ IntegerNode (location: (29,13)-(29,14))
│ │ └── flags: decimal
│ ├── opening_loc: (29,0)-(29,1) = "["
│ └── closing_loc: (29,15)-(29,16) = "]"
│ ├── closing_loc: (29,15)-(29,16) = "]"
│ └── flags: ∅
├── @ SymbolNode (location: (31,0)-(31,2))
│ ├── opening_loc: (31,0)-(31,1) = ":"
│ ├── value_loc: (31,1)-(31,2) = "~"
@ -163,7 +165,8 @@
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "c"
│ ├── opening_loc: (35,0)-(35,3) = "%i["
│ └── closing_loc: (35,8)-(35,9) = "]"
│ ├── closing_loc: (35,8)-(35,9) = "]"
│ └── flags: ∅
├── @ ArrayNode (location: (37,0)-(37,24))
│ ├── elements: (length: 4)
│ │ ├── @ SymbolNode (location: (37,3)-(37,4))
@ -187,7 +190,8 @@
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "d\#{3}f"
│ ├── opening_loc: (37,0)-(37,3) = "%i["
│ └── closing_loc: (37,23)-(37,24) = "]"
│ ├── closing_loc: (37,23)-(37,24) = "]"
│ └── flags: ∅
├── @ ArrayNode (location: (39,0)-(39,24))
│ ├── elements: (length: 4)
│ │ ├── @ SymbolNode (location: (39,3)-(39,4))
@ -256,7 +260,8 @@
│ │ │ └── unescaped: "f"
│ │ └── closing_loc: ∅
│ ├── opening_loc: (39,0)-(39,3) = "%I["
│ └── closing_loc: (39,23)-(39,24) = "]"
│ ├── closing_loc: (39,23)-(39,24) = "]"
│ └── flags: ∅
├── @ SymbolNode (location: (41,0)-(41,4))
│ ├── opening_loc: (41,0)-(41,1) = ":"
│ ├── value_loc: (41,1)-(41,4) = "@@a"
@ -275,7 +280,8 @@
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "a\\b"
│ ├── opening_loc: (45,0)-(45,3) = "%i["
│ └── closing_loc: (45,6)-(45,7) = "]"
│ ├── closing_loc: (45,6)-(45,7) = "]"
│ └── flags: ∅
├── @ SymbolNode (location: (47,0)-(47,3))
│ ├── opening_loc: (47,0)-(47,1) = ":"
│ ├── value_loc: (47,1)-(47,3) = "$a"

View File

@ -12,7 +12,8 @@
│ │ ├── closing_loc: (1,8)-(1,9) = "\""
│ │ └── unescaped: "\u0003{1}"
│ ├── opening_loc: (1,0)-(1,1) = "["
│ └── closing_loc: (1,9)-(1,10) = "]"
│ ├── closing_loc: (1,9)-(1,10) = "]"
│ └── flags: ∅
├── @ RegularExpressionNode (location: (3,0)-(3,8))
│ ├── opening_loc: (3,0)-(3,1) = "/"
│ ├── content_loc: (3,1)-(3,7) = "\\c\#{1}"

View File

@ -29,7 +29,8 @@
│ │ └── @ IntegerNode (location: (2,15)-(2,16))
│ │ └── flags: decimal
│ ├── opening_loc: (2,11)-(2,12) = "["
│ └── closing_loc: (2,16)-(2,17) = "]"
│ ├── closing_loc: (2,16)-(2,17) = "]"
│ └── flags: ∅
├── @ MultiWriteNode (location: (3,0)-(3,13))
│ ├── lefts: (length: 2)
│ │ ├── @ MultiTargetNode (location: (3,1)-(3,5))
@ -72,7 +73,8 @@
│ @ ArrayNode (location: (4,7)-(4,9))
│ ├── elements: (length: 0)
│ ├── opening_loc: (4,7)-(4,8) = "["
│ └── closing_loc: (4,8)-(4,9) = "]"
│ ├── closing_loc: (4,8)-(4,9) = "]"
│ └── flags: ∅
├── @ MultiWriteNode (location: (5,0)-(5,15))
│ ├── lefts: (length: 0)
│ ├── rest:
@ -94,7 +96,8 @@
│ │ └── @ IntegerNode (location: (5,13)-(5,14))
│ │ └── flags: decimal
│ ├── opening_loc: (5,9)-(5,10) = "["
│ └── closing_loc: (5,14)-(5,15) = "]"
│ ├── closing_loc: (5,14)-(5,15) = "]"
│ └── flags: ∅
├── @ MultiWriteNode (location: (6,0)-(6,19))
│ ├── lefts: (length: 2)
│ │ ├── @ ClassVariableTargetNode (location: (6,1)-(6,4))
@ -114,7 +117,8 @@
│ │ └── @ IntegerNode (location: (6,17)-(6,18))
│ │ └── flags: decimal
│ ├── opening_loc: (6,13)-(6,14) = "["
│ └── closing_loc: (6,18)-(6,19) = "]"
│ ├── closing_loc: (6,18)-(6,19) = "]"
│ └── flags: ∅
├── @ MultiWriteNode (location: (7,0)-(7,17))
│ ├── lefts: (length: 2)
│ │ ├── @ InstanceVariableTargetNode (location: (7,1)-(7,3))
@ -134,7 +138,8 @@
│ │ └── @ IntegerNode (location: (7,15)-(7,16))
│ │ └── flags: decimal
│ ├── opening_loc: (7,11)-(7,12) = "["
│ └── closing_loc: (7,16)-(7,17) = "]"
│ ├── closing_loc: (7,16)-(7,17) = "]"
│ └── flags: ∅
├── @ MultiWriteNode (location: (8,0)-(8,25))
│ ├── lefts: (length: 2)
│ │ ├── @ LocalVariableTargetNode (location: (8,1)-(8,2))
@ -169,9 +174,11 @@
│ │ │ └── @ IntegerNode (location: (8,22)-(8,23))
│ │ │ └── flags: decimal
│ │ ├── opening_loc: (8,18)-(8,19) = "["
│ │ └── closing_loc: (8,23)-(8,24) = "]"
│ │ ├── closing_loc: (8,23)-(8,24) = "]"
│ │ └── flags: ∅
│ ├── opening_loc: (8,14)-(8,15) = "["
│ └── closing_loc: (8,24)-(8,25) = "]"
│ ├── closing_loc: (8,24)-(8,25) = "]"
│ └── flags: ∅
├── @ MultiWriteNode (location: (9,0)-(9,15))
│ ├── lefts: (length: 1)
│ │ └── @ LocalVariableTargetNode (location: (9,1)-(9,2))
@ -193,7 +200,8 @@
│ │ └── @ IntegerNode (location: (9,13)-(9,14))
│ │ └── flags: decimal
│ ├── opening_loc: (9,9)-(9,10) = "["
│ └── closing_loc: (9,14)-(9,15) = "]"
│ ├── closing_loc: (9,14)-(9,15) = "]"
│ └── flags: ∅
├── @ MultiWriteNode (location: (10,0)-(10,18))
│ ├── lefts: (length: 1)
│ │ └── @ LocalVariableTargetNode (location: (10,1)-(10,2))
@ -218,7 +226,8 @@
│ │ └── @ IntegerNode (location: (10,16)-(10,17))
│ │ └── flags: decimal
│ ├── opening_loc: (10,12)-(10,13) = "["
│ └── closing_loc: (10,17)-(10,18) = "]"
│ ├── closing_loc: (10,17)-(10,18) = "]"
│ └── flags: ∅
├── @ MultiWriteNode (location: (11,0)-(11,15))
│ ├── lefts: (length: 2)
│ │ ├── @ LocalVariableTargetNode (location: (11,1)-(11,2))
@ -240,7 +249,8 @@
│ │ └── @ IntegerNode (location: (11,13)-(11,14))
│ │ └── flags: decimal
│ ├── opening_loc: (11,9)-(11,10) = "["
│ └── closing_loc: (11,14)-(11,15) = "]"
│ ├── closing_loc: (11,14)-(11,15) = "]"
│ └── flags: ∅
├── @ MultiWriteNode (location: (12,0)-(12,12))
│ ├── lefts: (length: 2)
│ │ ├── @ LocalVariableTargetNode (location: (12,1)-(12,2))
@ -316,7 +326,8 @@
│ │ └── @ IntegerNode (location: (14,21)-(14,22))
│ │ └── flags: decimal
│ ├── opening_loc: (14,17)-(14,18) = "["
│ └── closing_loc: (14,22)-(14,23) = "]"
│ ├── closing_loc: (14,22)-(14,23) = "]"
│ └── flags: ∅
├── @ MultiWriteNode (location: (15,0)-(15,24))
│ ├── lefts: (length: 2)
│ │ ├── @ CallNode (location: (15,1)-(15,8))
@ -372,7 +383,8 @@
│ │ └── @ IntegerNode (location: (15,22)-(15,23))
│ │ └── flags: decimal
│ ├── opening_loc: (15,18)-(15,19) = "["
│ └── closing_loc: (15,23)-(15,24) = "]"
│ ├── closing_loc: (15,23)-(15,24) = "]"
│ └── flags: ∅
├── @ MultiWriteNode (location: (16,0)-(16,21))
│ ├── lefts: (length: 2)
│ │ ├── @ CallNode (location: (16,1)-(16,5))
@ -424,7 +436,8 @@
│ │ └── @ IntegerNode (location: (16,19)-(16,20))
│ │ └── flags: decimal
│ ├── opening_loc: (16,15)-(16,16) = "["
│ └── closing_loc: (16,20)-(16,21) = "]"
│ ├── closing_loc: (16,20)-(16,21) = "]"
│ └── flags: ∅
├── @ MultiWriteNode (location: (17,0)-(17,12))
│ ├── lefts: (length: 0)
│ ├── rest:

View File

@ -45,7 +45,8 @@
│ │ │ └── @ IntegerNode (location: (3,23)-(3,24))
│ │ │ └── flags: decimal
│ │ ├── opening_loc: (3,19)-(3,20) = "["
│ │ └── closing_loc: (3,24)-(3,25) = "]"
│ │ ├── closing_loc: (3,24)-(3,25) = "]"
│ │ └── flags: ∅
│ ├── opening_loc: (3,9)-(3,10) = "("
│ └── closing_loc: (3,25)-(3,26) = ")"
├── rparen_loc: (3,26)-(3,27) = ")"

View File

@ -102,7 +102,8 @@
│ │ ├── closing_loc: (5,10)-(5,11) = ")"
│ │ └── unescaped: ""
│ ├── opening_loc: (5,0)-(5,1) = "["
│ └── closing_loc: (5,11)-(5,12) = "]"
│ ├── closing_loc: (5,11)-(5,12) = "]"
│ └── flags: ∅
├── @ CallNode (location: (6,0)-(6,15))
│ ├── receiver:
│ │ @ CallNode (location: (6,0)-(6,13))
@ -770,7 +771,8 @@
│ │ └── @ IntegerNode (location: (65,4)-(65,5))
│ │ └── flags: decimal
│ ├── opening_loc: (65,0)-(65,1) = "["
│ └── closing_loc: (65,5)-(65,6) = "]"
│ ├── closing_loc: (65,5)-(65,6) = "]"
│ └── flags: ∅
├── @ ArrayNode (location: (66,0)-(66,11))
│ ├── elements: (length: 3)
│ │ ├── @ IntegerNode (location: (66,1)-(66,2))
@ -790,17 +792,20 @@
│ │ ├── flags: variable_call
│ │ └── name: :n2
│ ├── opening_loc: (66,0)-(66,1) = "["
│ └── closing_loc: (66,10)-(66,11) = "]"
│ ├── closing_loc: (66,10)-(66,11) = "]"
│ └── flags: ∅
├── @ ArrayNode (location: (67,0)-(67,3))
│ ├── elements: (length: 1)
│ │ └── @ IntegerNode (location: (67,1)-(67,2))
│ │ └── flags: decimal
│ ├── opening_loc: (67,0)-(67,1) = "["
│ └── closing_loc: (67,2)-(67,3) = "]"
│ ├── closing_loc: (67,2)-(67,3) = "]"
│ └── flags: ∅
├── @ ArrayNode (location: (68,0)-(68,2))
│ ├── elements: (length: 0)
│ ├── opening_loc: (68,0)-(68,1) = "["
│ └── closing_loc: (68,1)-(68,2) = "]"
│ ├── closing_loc: (68,1)-(68,2) = "]"
│ └── flags: ∅
├── @ ArrayNode (location: (69,0)-(69,10))
│ ├── elements: (length: 2)
│ │ ├── @ IntegerNode (location: (69,1)-(69,2))
@ -811,7 +816,8 @@
│ │ @ InstanceVariableReadNode (location: (69,5)-(69,9))
│ │ └── name: :@foo
│ ├── opening_loc: (69,0)-(69,1) = "["
│ └── closing_loc: (69,9)-(69,10) = "]"
│ ├── closing_loc: (69,9)-(69,10) = "]"
│ └── flags: contains_splat
├── @ ArrayNode (location: (70,0)-(70,10))
│ ├── elements: (length: 2)
│ │ ├── @ SplatNode (location: (70,1)-(70,6))
@ -822,7 +828,8 @@
│ │ └── @ IntegerNode (location: (70,8)-(70,9))
│ │ └── flags: decimal
│ ├── opening_loc: (70,0)-(70,1) = "["
│ └── closing_loc: (70,9)-(70,10) = "]"
│ ├── closing_loc: (70,9)-(70,10) = "]"
│ └── flags: contains_splat
├── @ ArrayNode (location: (71,0)-(71,14))
│ ├── elements: (length: 2)
│ │ ├── @ SplatNode (location: (71,1)-(71,6))
@ -836,7 +843,8 @@
│ │ @ InstanceVariableReadNode (location: (71,9)-(71,13))
│ │ └── name: :@baz
│ ├── opening_loc: (71,0)-(71,1) = "["
│ └── closing_loc: (71,13)-(71,14) = "]"
│ ├── closing_loc: (71,13)-(71,14) = "]"
│ └── flags: contains_splat
├── @ HashNode (location: (72,0)-(72,2))
│ ├── opening_loc: (72,0)-(72,1) = "{"
│ ├── elements: (length: 0)

View File

@ -37,7 +37,8 @@
│ │ │ └── @ IntegerNode (location: (7,11)-(7,12))
│ │ │ └── flags: decimal
│ │ ├── opening_loc: ∅
│ │ └── closing_loc: ∅
│ │ ├── closing_loc: ∅
│ │ └── flags: ∅
│ └── operator_loc: (7,6)-(7,7) = "="
├── @ GlobalVariableWriteNode (location: (9,0)-(9,8))
│ ├── name: :$abc
@ -100,7 +101,8 @@
│ │ │ └── @ IntegerNode (location: (23,10)-(23,11))
│ │ │ └── flags: decimal
│ │ ├── opening_loc: ∅
│ │ └── closing_loc: ∅
│ │ ├── closing_loc: ∅
│ │ └── flags: ∅
│ └── operator_loc: (23,5)-(23,6) = "="
├── @ MultiWriteNode (location: (25,0)-(25,14))
│ ├── lefts: (length: 2)
@ -127,7 +129,8 @@
│ │ │ └── @ IntegerNode (location: (27,10)-(27,11))
│ │ │ └── flags: decimal
│ │ ├── opening_loc: ∅
│ │ └── closing_loc: ∅
│ │ ├── closing_loc: ∅
│ │ └── flags: ∅
│ └── operator_loc: (27,5)-(27,6) = "="
├── @ LocalVariableWriteNode (location: (29,0)-(29,7))
│ ├── name: :foo
@ -149,7 +152,8 @@
│ │ │ └── @ IntegerNode (location: (29,18)-(29,19))
│ │ │ └── flags: decimal
│ │ ├── opening_loc: ∅
│ │ └── closing_loc: ∅
│ │ ├── closing_loc: ∅
│ │ └── flags: ∅
│ └── operator_loc: (29,13)-(29,14) = "="
├── @ LocalVariableWriteNode (location: (31,0)-(31,10))
│ ├── name: :foo
@ -163,7 +167,8 @@
│ │ │ └── @ IntegerNode (location: (31,9)-(31,10))
│ │ │ └── flags: decimal
│ │ ├── opening_loc: ∅
│ │ └── closing_loc: ∅
│ │ ├── closing_loc: ∅
│ │ └── flags: ∅
│ └── operator_loc: (31,4)-(31,5) = "="
├── @ MultiWriteNode (location: (33,0)-(33,13))
│ ├── lefts: (length: 1)
@ -186,7 +191,8 @@
│ │ └── @ IntegerNode (location: (33,12)-(33,13))
│ │ └── flags: decimal
│ ├── opening_loc: ∅
│ └── closing_loc: ∅
│ ├── closing_loc: ∅
│ └── flags: ∅
├── @ MultiWriteNode (location: (35,0)-(35,11))
│ ├── lefts: (length: 1)
│ │ └── @ LocalVariableTargetNode (location: (35,0)-(35,3))
@ -208,7 +214,8 @@
│ │ └── @ IntegerNode (location: (35,10)-(35,11))
│ │ └── flags: decimal
│ ├── opening_loc: ∅
│ └── closing_loc: ∅
│ ├── closing_loc: ∅
│ └── flags: ∅
├── @ MultiWriteNode (location: (37,0)-(37,16))
│ ├── lefts: (length: 1)
│ │ └── @ LocalVariableTargetNode (location: (37,0)-(37,3))
@ -233,7 +240,8 @@
│ │ └── @ IntegerNode (location: (37,15)-(37,16))
│ │ └── flags: decimal
│ ├── opening_loc: ∅
│ └── closing_loc: ∅
│ ├── closing_loc: ∅
│ └── flags: ∅
├── @ MultiWriteNode (location: (39,0)-(39,27))
│ ├── lefts: (length: 2)
│ │ ├── @ LocalVariableTargetNode (location: (39,0)-(39,3))
@ -268,9 +276,11 @@
│ │ │ └── @ IntegerNode (location: (39,25)-(39,26))
│ │ │ └── flags: decimal
│ │ ├── opening_loc: (39,21)-(39,22) = "["
│ │ └── closing_loc: (39,26)-(39,27) = "]"
│ │ ├── closing_loc: (39,26)-(39,27) = "]"
│ │ └── flags: ∅
│ ├── opening_loc: ∅
│ └── closing_loc: ∅
│ ├── closing_loc: ∅
│ └── flags: ∅
├── @ LocalVariableWriteNode (location: (41,0)-(41,10))
│ ├── name: :foo
│ ├── depth: 0
@ -285,7 +295,8 @@
│ │ │ ├── name: :bar
│ │ │ └── depth: 0
│ │ ├── opening_loc: ∅
│ │ └── closing_loc: ∅
│ │ ├── closing_loc: ∅
│ │ └── flags: contains_splat
│ └── operator_loc: (41,4)-(41,5) = "="
├── @ ConstantWriteNode (location: (43,0)-(43,10))
│ ├── name: :Foo
@ -298,7 +309,8 @@
│ │ │ └── @ IntegerNode (location: (43,9)-(43,10))
│ │ │ └── flags: decimal
│ │ ├── opening_loc: ∅
│ │ └── closing_loc: ∅
│ │ ├── closing_loc: ∅
│ │ └── flags: ∅
│ └── operator_loc: (43,4)-(43,5) = "="
├── @ ParenthesesNode (location: (45,0)-(45,9))
│ ├── body:
@ -365,4 +377,5 @@
@ ArrayNode (location: (47,15)-(47,17))
├── elements: (length: 0)
├── opening_loc: (47,15)-(47,16) = "["
└── closing_loc: (47,16)-(47,17) = "]"
├── closing_loc: (47,16)-(47,17) = "]"
└── flags: ∅

View File

@ -16,7 +16,8 @@
│ │ │ └── flags: decimal
│ │ └── operator_loc: (1,4)-(1,6) = "=>"
│ ├── opening_loc: (1,0)-(1,1) = "["
│ └── closing_loc: (1,9)-(1,10) = "]"
│ ├── closing_loc: (1,9)-(1,10) = "]"
│ └── flags: ∅
└── @ ArrayNode (location: (3,0)-(3,13))
├── elements: (length: 2)
│ ├── @ IntegerNode (location: (3,2)-(3,3))
@ -32,4 +33,5 @@
│ │ └── flags: decimal
│ └── operator_loc: (3,7)-(3,9) = "=>"
├── opening_loc: (3,0)-(3,1) = "["
└── closing_loc: (3,12)-(3,13) = "]"
├── closing_loc: (3,12)-(3,13) = "]"
└── flags: ∅

View File

@ -10,4 +10,5 @@
│ └── @ IntegerNode (location: (1,4)-(1,5))
│ └── flags: decimal
├── opening_loc: (1,0)-(1,1) = "["
└── closing_loc: (1,5)-(1,6) = "]"
├── closing_loc: (1,5)-(1,6) = "]"
└── flags: ∅

View File

@ -19,7 +19,8 @@
│ │ ├── flags: variable_call
│ │ └── name: :foo
│ ├── opening_loc: (1,0)-(1,1) = "["
│ └── closing_loc: (1,5)-(1,6) = "]"
│ ├── closing_loc: (1,5)-(1,6) = "]"
│ └── flags: contains_splat
├── @ ArrayNode (location: (3,0)-(3,12))
│ ├── elements: (length: 3)
│ │ ├── @ IntegerNode (location: (3,1)-(3,2))
@ -40,7 +41,8 @@
│ │ └── @ IntegerNode (location: (3,10)-(3,11))
│ │ └── flags: decimal
│ ├── opening_loc: (3,0)-(3,1) = "["
│ └── closing_loc: (3,11)-(3,12) = "]"
│ ├── closing_loc: (3,11)-(3,12) = "]"
│ └── flags: contains_splat
└── @ ArrayNode (location: (5,0)-(5,9))
├── elements: (length: 2)
│ ├── @ IntegerNode (location: (5,1)-(5,2))
@ -59,4 +61,5 @@
│ ├── flags: variable_call
│ └── name: :foo
├── opening_loc: (5,0)-(5,1) = "["
└── closing_loc: (5,8)-(5,9) = "]"
├── closing_loc: (5,8)-(5,9) = "]"
└── flags: contains_splat

View File

@ -16,4 +16,5 @@
│ ├── closing_loc: ∅
│ └── unescaped: "bar"
├── opening_loc: (1,0)-(1,3) = "%i["
└── closing_loc: (1,10)-(1,11) = "]"
├── closing_loc: (1,10)-(1,11) = "]"
└── flags: ∅

View File

@ -6,8 +6,10 @@
├── @ ArrayNode (location: (1,0)-(1,4))
│ ├── elements: (length: 0)
│ ├── opening_loc: (1,0)-(1,3) = "%I("
│ └── closing_loc: (1,3)-(1,4) = ")"
│ ├── closing_loc: (1,3)-(1,4) = ")"
│ └── flags: ∅
└── @ ArrayNode (location: (3,0)-(3,4))
├── elements: (length: 0)
├── opening_loc: (3,0)-(3,3) = "%i["
└── closing_loc: (3,3)-(3,4) = "]"
├── closing_loc: (3,3)-(3,4) = "]"
└── flags: ∅

View File

@ -31,7 +31,8 @@
│ │ │ └── closing_loc: (1,12)-(1,13) = "}"
│ │ └── closing_loc: ∅
│ ├── opening_loc: (1,0)-(1,3) = "%I["
│ └── closing_loc: (1,13)-(1,14) = "]"
│ ├── closing_loc: (1,13)-(1,14) = "]"
│ └── flags: ∅
└── @ ArrayNode (location: (3,0)-(3,13))
├── elements: (length: 1)
│ └── @ InterpolatedSymbolNode (location: (3,3)-(3,12))
@ -61,4 +62,5 @@
│ │ └── closing_loc: (3,11)-(3,12) = "}"
│ └── closing_loc: ∅
├── opening_loc: (3,0)-(3,3) = "%I["
└── closing_loc: (3,12)-(3,13) = "]"
├── closing_loc: (3,12)-(3,13) = "]"
└── flags: ∅

View File

@ -18,4 +18,5 @@
│ ├── closing_loc: ∅
│ └── unescaped: "bar"
├── opening_loc: (1,0)-(1,3) = "%w["
└── closing_loc: (1,10)-(1,11) = "]"
├── closing_loc: (1,10)-(1,11) = "]"
└── flags: ∅

View File

@ -6,8 +6,10 @@
├── @ ArrayNode (location: (1,0)-(1,4))
│ ├── elements: (length: 0)
│ ├── opening_loc: (1,0)-(1,3) = "%W("
│ └── closing_loc: (1,3)-(1,4) = ")"
│ ├── closing_loc: (1,3)-(1,4) = ")"
│ └── flags: ∅
└── @ ArrayNode (location: (3,0)-(3,4))
├── elements: (length: 0)
├── opening_loc: (3,0)-(3,3) = "%w["
└── closing_loc: (3,3)-(3,4) = "]"
├── closing_loc: (3,3)-(3,4) = "]"
└── flags: ∅

View File

@ -32,7 +32,8 @@
│ │ │ └── closing_loc: (1,12)-(1,13) = "}"
│ │ └── closing_loc: ∅
│ ├── opening_loc: (1,0)-(1,3) = "%W["
│ └── closing_loc: (1,13)-(1,14) = "]"
│ ├── closing_loc: (1,13)-(1,14) = "]"
│ └── flags: ∅
└── @ ArrayNode (location: (3,0)-(3,22))
├── elements: (length: 2)
│ ├── @ StringNode (location: (3,3)-(3,6))
@ -73,4 +74,5 @@
│ │ └── name: :@baz
│ └── closing_loc: ∅
├── opening_loc: (3,0)-(3,3) = "%W["
└── closing_loc: (3,21)-(3,22) = "]"
├── closing_loc: (3,21)-(3,22) = "]"
└── flags: ∅

View File

@ -24,7 +24,8 @@
│ │ │ ├── flags: variable_call
│ │ │ └── name: :bar
│ │ ├── opening_loc: ∅
│ │ └── closing_loc: ∅
│ │ ├── closing_loc: ∅
│ │ └── flags: contains_splat
│ └── operator_loc: (1,4)-(1,5) = "="
├── @ LocalVariableWriteNode (location: (3,0)-(3,12))
│ ├── name: :foo
@ -46,7 +47,8 @@
│ │ │ └── @ IntegerNode (location: (3,11)-(3,12))
│ │ │ └── flags: decimal
│ │ ├── opening_loc: ∅
│ │ └── closing_loc: ∅
│ │ ├── closing_loc: ∅
│ │ └── flags: ∅
│ └── operator_loc: (3,4)-(3,5) = "="
└── @ LocalVariableWriteNode (location: (5,0)-(5,15))
├── name: :foo
@ -79,5 +81,6 @@
│ │ ├── flags: variable_call
│ │ └── name: :bar
│ ├── opening_loc: ∅
│ └── closing_loc: ∅
│ ├── closing_loc: ∅
│ └── flags: contains_splat
└── operator_loc: (5,4)-(5,5) = "="

View File

@ -14,7 +14,8 @@
│ │ │ └── @ ArrayNode (location: (1,2)-(1,4))
│ │ │ ├── elements: (length: 0)
│ │ │ ├── opening_loc: (1,2)-(1,3) = "["
│ │ │ └── closing_loc: (1,3)-(1,4) = "]"
│ │ │ ├── closing_loc: (1,3)-(1,4) = "]"
│ │ │ └── flags: ∅
│ │ └── flags: ∅
│ ├── closing_loc: ∅
│ ├── block:
@ -37,7 +38,8 @@
│ │ ├── @ ArrayNode (location: (3,2)-(3,4))
│ │ │ ├── elements: (length: 0)
│ │ │ ├── opening_loc: (3,2)-(3,3) = "["
│ │ │ └── closing_loc: (3,3)-(3,4) = "]"
│ │ │ ├── closing_loc: (3,3)-(3,4) = "]"
│ │ │ └── flags: ∅
│ │ └── @ IntegerNode (location: (3,6)-(3,7))
│ │ └── flags: decimal
│ └── flags: ∅

View File

@ -22,7 +22,8 @@
│ │ │ │ └── @ ArrayNode (location: (1,5)-(1,7))
│ │ │ │ ├── elements: (length: 0)
│ │ │ │ ├── opening_loc: (1,5)-(1,6) = "["
│ │ │ │ └── closing_loc: (1,6)-(1,7) = "]"
│ │ │ │ ├── closing_loc: (1,6)-(1,7) = "]"
│ │ │ │ └── flags: ∅
│ │ │ └── closing_loc: (1,7)-(1,8) = "}"
│ │ └── closing_loc: (1,8)-(1,9) = "\""
│ └── flags: ∅

View File

@ -30,4 +30,5 @@
│ │ └── closing_loc: (3,6)-(3,7) = "}"
│ └── closing_loc: ∅
├── opening_loc: (3,0)-(3,3) = "%W\""
└── closing_loc: (3,7)-(3,8) = "\""
├── closing_loc: (3,7)-(3,8) = "\""
└── flags: ∅

View File

@ -23,7 +23,8 @@
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "\#@1"
│ ├── opening_loc: (5,1)-(5,4) = "%I["
│ └── closing_loc: (5,7)-(5,8) = "]"
│ ├── closing_loc: (5,7)-(5,8) = "]"
│ └── flags: ∅
├── @ ArrayNode (location: (7,1)-(7,9))
│ ├── elements: (length: 1)
│ │ └── @ SymbolNode (location: (7,4)-(7,8))
@ -32,7 +33,8 @@
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "\#@@1"
│ ├── opening_loc: (7,1)-(7,4) = "%I["
│ └── closing_loc: (7,8)-(7,9) = "]"
│ ├── closing_loc: (7,8)-(7,9) = "]"
│ └── flags: ∅
├── @ StringNode (location: (9,1)-(9,8))
│ ├── flags: ∅
│ ├── opening_loc: (9,1)-(9,4) = "%Q{"
@ -54,7 +56,8 @@
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "\#@1"
│ ├── opening_loc: (13,1)-(13,4) = "%W["
│ └── closing_loc: (13,7)-(13,8) = "]"
│ ├── closing_loc: (13,7)-(13,8) = "]"
│ └── flags: ∅
├── @ ArrayNode (location: (15,1)-(15,9))
│ ├── elements: (length: 1)
│ │ └── @ StringNode (location: (15,4)-(15,8))
@ -64,7 +67,8 @@
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "\#@@1"
│ ├── opening_loc: (15,1)-(15,4) = "%W["
│ └── closing_loc: (15,8)-(15,9) = "]"
│ ├── closing_loc: (15,8)-(15,9) = "]"
│ └── flags: ∅
├── @ ArrayNode (location: (17,1)-(17,10))
│ ├── elements: (length: 1)
│ │ └── @ SymbolNode (location: (17,5)-(17,8))
@ -73,7 +77,8 @@
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "\#@1"
│ ├── opening_loc: (17,1)-(17,4) = "%i["
│ └── closing_loc: (17,9)-(17,10) = "]"
│ ├── closing_loc: (17,9)-(17,10) = "]"
│ └── flags: ∅
├── @ ArrayNode (location: (19,1)-(19,11))
│ ├── elements: (length: 1)
│ │ └── @ SymbolNode (location: (19,5)-(19,9))
@ -82,7 +87,8 @@
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "\#@@1"
│ ├── opening_loc: (19,1)-(19,4) = "%i["
│ └── closing_loc: (19,10)-(19,11) = "]"
│ ├── closing_loc: (19,10)-(19,11) = "]"
│ └── flags: ∅
├── @ StringNode (location: (21,1)-(21,8))
│ ├── flags: ∅
│ ├── opening_loc: (21,1)-(21,4) = "%q{"
@ -126,7 +132,8 @@
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "\#@1"
│ ├── opening_loc: (33,1)-(33,4) = "%w["
│ └── closing_loc: (33,9)-(33,10) = "]"
│ ├── closing_loc: (33,9)-(33,10) = "]"
│ └── flags: ∅
├── @ ArrayNode (location: (35,1)-(35,11))
│ ├── elements: (length: 1)
│ │ └── @ StringNode (location: (35,5)-(35,9))
@ -136,7 +143,8 @@
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "\#@@1"
│ ├── opening_loc: (35,1)-(35,4) = "%w["
│ └── closing_loc: (35,10)-(35,11) = "]"
│ ├── closing_loc: (35,10)-(35,11) = "]"
│ └── flags: ∅
├── @ XStringNode (location: (37,1)-(37,8))
│ ├── opening_loc: (37,1)-(37,4) = "%x{"
│ ├── content_loc: (37,4)-(37,7) = "\#@1"

View File

@ -24,7 +24,8 @@
│ │ └── @ IntegerNode (location: (1,16)-(1,17))
│ │ └── flags: decimal
│ ├── opening_loc: ∅
│ └── closing_loc: ∅
│ ├── closing_loc: ∅
│ └── flags: ∅
├── @ MultiWriteNode (location: (3,0)-(3,15))
│ ├── lefts: (length: 2)
│ │ ├── @ LocalVariableTargetNode (location: (3,0)-(3,3))
@ -46,7 +47,8 @@
│ │ └── @ IntegerNode (location: (3,14)-(3,15))
│ │ └── flags: decimal
│ ├── opening_loc: ∅
│ └── closing_loc: ∅
│ ├── closing_loc: ∅
│ └── flags: ∅
└── @ MultiWriteNode (location: (5,0)-(5,20))
├── lefts: (length: 3)
│ ├── @ LocalVariableTargetNode (location: (5,0)-(5,3))
@ -71,4 +73,5 @@
│ └── @ IntegerNode (location: (5,19)-(5,20))
│ └── flags: decimal
├── opening_loc: ∅
└── closing_loc: ∅
├── closing_loc: ∅
└── flags: ∅

View File

@ -130,7 +130,8 @@
│ │ ├── flags: variable_call
│ │ └── name: :foo
│ ├── opening_loc: ∅
│ └── closing_loc: ∅
│ ├── closing_loc: ∅
│ └── flags: contains_splat
├── @ MultiWriteNode (location: (11,0)-(11,10))
│ ├── lefts: (length: 1)
│ │ └── @ LocalVariableTargetNode (location: (11,0)-(11,1))
@ -279,4 +280,5 @@
│ ├── flags: variable_call
│ └── name: :bar
├── opening_loc: ∅
└── closing_loc: ∅
├── closing_loc: ∅
└── flags: contains_splat

View File

@ -17,7 +17,8 @@
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "a\nb"
│ ├── opening_loc: (4,0)-(4,3) = "%I{"
│ └── closing_loc: (5,1)-(5,2) = "}"
│ ├── closing_loc: (5,1)-(5,2) = "}"
│ └── flags: ∅
├── @ StringNode (location: (7,0)-(8,2))
│ ├── flags: ∅
│ ├── opening_loc: (7,0)-(7,3) = "%Q{"
@ -33,7 +34,8 @@
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "a\nb"
│ ├── opening_loc: (10,0)-(10,3) = "%W{"
│ └── closing_loc: (11,1)-(11,2) = "}"
│ ├── closing_loc: (11,1)-(11,2) = "}"
│ └── flags: ∅
├── @ ArrayNode (location: (13,0)-(14,2))
│ ├── elements: (length: 1)
│ │ └── @ SymbolNode (location: (13,3)-(14,1))
@ -42,7 +44,8 @@
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "a\nb"
│ ├── opening_loc: (13,0)-(13,3) = "%i{"
│ └── closing_loc: (14,1)-(14,2) = "}"
│ ├── closing_loc: (14,1)-(14,2) = "}"
│ └── flags: ∅
├── @ StringNode (location: (16,0)-(17,2))
│ ├── flags: ∅
│ ├── opening_loc: (16,0)-(16,3) = "%q{"
@ -69,7 +72,8 @@
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "a\nb"
│ ├── opening_loc: (25,0)-(25,3) = "%w{"
│ └── closing_loc: (26,1)-(26,2) = "}"
│ ├── closing_loc: (26,1)-(26,2) = "}"
│ └── flags: ∅
├── @ XStringNode (location: (28,0)-(29,2))
│ ├── opening_loc: (28,0)-(28,3) = "%x{"
│ ├── content_loc: (28,3)-(29,1) = "a\\\nb"

View File

@ -27,7 +27,8 @@
│ │ │ └── name: :+
│ │ └── @ SourceEncodingNode (location: (1,38)-(1,50))
│ ├── opening_loc: (1,13)-(1,14) = "["
│ └── closing_loc: (1,50)-(1,51) = "]"
│ ├── closing_loc: (1,50)-(1,51) = "]"
│ └── flags: ∅
├── conditions: (length: 1)
│ └── @ InNode (location: (2,10)-(2,47))
│ ├── pattern:

View File

@ -12,7 +12,8 @@
│ │ │ └── @ IntegerNode (location: (1,4)-(1,5))
│ │ │ └── flags: decimal
│ │ ├── opening_loc: (1,0)-(1,1) = "["
│ │ └── closing_loc: (1,5)-(1,6) = "]"
│ │ ├── closing_loc: (1,5)-(1,6) = "]"
│ │ └── flags: ∅
│ ├── pattern:
│ │ @ ArrayPatternNode (location: (1,10)-(1,14))
│ │ ├── constant: ∅
@ -40,7 +41,8 @@
│ │ │ └── @ IntegerNode (location: (3,4)-(3,5))
│ │ │ └── flags: decimal
│ │ ├── opening_loc: (3,0)-(3,1) = "["
│ │ └── closing_loc: (3,5)-(3,6) = "]"
│ │ ├── closing_loc: (3,5)-(3,6) = "]"
│ │ └── flags: ∅
│ ├── pattern:
│ │ @ ArrayPatternNode (location: (3,10)-(3,14))
│ │ ├── constant: ∅

View File

@ -38,4 +38,5 @@
│ └── @ IntegerNode (location: (1,27)-(1,28))
│ └── flags: decimal
├── opening_loc: (1,23)-(1,24) = "["
└── closing_loc: (1,28)-(1,29) = "]"
├── closing_loc: (1,28)-(1,29) = "]"
└── flags: ∅