[ruby/yarp] Change AndWriteNode, OrWriteNode, OperatorWriteNode to contain write nodes

It makes it more difficult to find all locations where a variable
is written to if they're just read nodes. To keep things consistent
we should make them write nodes.

https://github.com/ruby/yarp/commit/840e094045
This commit is contained in:
Kevin Newton 2023-08-18 20:41:01 -04:00 committed by Jemma Issroff
parent 988b0108fb
commit a7f40fc2d7
27 changed files with 170 additions and 91 deletions

View File

@ -89,7 +89,7 @@ ProgramNode(0...402)(
), ),
StatementsNode(63...72)( StatementsNode(63...72)(
[OperatorWriteNode(63...72)( [OperatorWriteNode(63...72)(
LocalVariableReadNode(63...67)(:memo, 0), LocalVariableWriteNode(63...67)(:memo, 0, nil, (63...67), nil),
(68...70), (68...70),
:+, :+,
LocalVariableReadNode(71...72)(:x, 0) LocalVariableReadNode(71...72)(:x, 0)

View File

@ -2,18 +2,18 @@ ProgramNode(0...24)(
[:a], [:a],
StatementsNode(0...24)( StatementsNode(0...24)(
[AndWriteNode(0...7)( [AndWriteNode(0...7)(
LocalVariableReadNode(0...1)(:a, 0), LocalVariableWriteNode(0...1)(:a, 0, nil, (0...1), nil),
CallNode(6...7)(nil, nil, (6...7), nil, nil, nil, nil, 2, "b"), CallNode(6...7)(nil, nil, (6...7), nil, nil, nil, nil, 2, "b"),
(2...5) (2...5)
), ),
OperatorWriteNode(9...15)( OperatorWriteNode(9...15)(
LocalVariableReadNode(9...10)(:a, 0), LocalVariableWriteNode(9...10)(:a, 0, nil, (9...10), nil),
(11...13), (11...13),
:+, :+,
CallNode(14...15)(nil, nil, (14...15), nil, nil, nil, nil, 2, "b") CallNode(14...15)(nil, nil, (14...15), nil, nil, nil, nil, 2, "b")
), ),
OrWriteNode(17...24)( OrWriteNode(17...24)(
LocalVariableReadNode(17...18)(:a, 0), LocalVariableWriteNode(17...18)(:a, 0, nil, (17...18), nil),
CallNode(23...24)(nil, nil, (23...24), nil, nil, nil, nil, 2, "b"), CallNode(23...24)(nil, nil, (23...24), nil, nil, nil, nil, 2, "b"),
(19...22) (19...22)
)] )]

View File

@ -9,7 +9,7 @@ ProgramNode(0...78)(
DefinedNode(27...43)( DefinedNode(27...43)(
(35...36), (35...36),
OperatorWriteNode(36...42)( OperatorWriteNode(36...42)(
LocalVariableReadNode(36...37)(:x, 0), LocalVariableWriteNode(36...37)(:x, 0, nil, (36...37), nil),
(38...40), (38...40),
:%, :%,
IntegerNode(41...42)() IntegerNode(41...42)()

View File

@ -2,7 +2,7 @@ ProgramNode(0...18)(
[:a], [:a],
StatementsNode(0...18)( StatementsNode(0...18)(
[OrWriteNode(0...18)( [OrWriteNode(0...18)(
LocalVariableReadNode(0...1)(:a, 0), LocalVariableWriteNode(0...1)(:a, 0, nil, (0...1), nil),
RescueModifierNode(6...18)( RescueModifierNode(6...18)(
CallNode(6...7)(nil, nil, (6...7), nil, nil, nil, nil, 2, "b"), CallNode(6...7)(nil, nil, (6...7), nil, nil, nil, nil, 2, "b"),
(8...14), (8...14),

View File

@ -2,10 +2,14 @@ ProgramNode(0...12)(
[], [],
StatementsNode(0...12)( StatementsNode(0...12)(
[OrWriteNode(0...12)( [OrWriteNode(0...12)(
ConstantPathNode(0...6)( ConstantPathWriteNode(0...6)(
ConstantPathNode(0...3)(nil, ConstantReadNode(2...3)(), (0...2)), ConstantPathNode(0...6)(
ConstantReadNode(5...6)(), ConstantPathNode(0...3)(nil, ConstantReadNode(2...3)(), (0...2)),
(3...5) ConstantReadNode(5...6)(),
(3...5)
),
nil,
nil
), ),
IntegerNode(11...12)(), IntegerNode(11...12)(),
(7...10) (7...10)

View File

@ -2,7 +2,11 @@ ProgramNode(0...9)(
[], [],
StatementsNode(0...9)( StatementsNode(0...9)(
[OrWriteNode(0...9)( [OrWriteNode(0...9)(
ConstantPathNode(0...3)(nil, ConstantReadNode(2...3)(), (0...2)), ConstantPathWriteNode(0...3)(
ConstantPathNode(0...3)(nil, ConstantReadNode(2...3)(), (0...2)),
nil,
nil
),
IntegerNode(8...9)(), IntegerNode(8...9)(),
(4...7) (4...7)
)] )]

View File

@ -2,7 +2,11 @@ ProgramNode(0...8)(
[], [],
StatementsNode(0...8)( StatementsNode(0...8)(
[OperatorWriteNode(0...8)( [OperatorWriteNode(0...8)(
ConstantPathNode(0...3)(nil, ConstantReadNode(2...3)(), (0...2)), ConstantPathWriteNode(0...3)(
ConstantPathNode(0...3)(nil, ConstantReadNode(2...3)(), (0...2)),
nil,
nil
),
(4...6), (4...6),
:&, :&,
IntegerNode(7...8)() IntegerNode(7...8)()

View File

@ -2,7 +2,11 @@ ProgramNode(0...9)(
[], [],
StatementsNode(0...9)( StatementsNode(0...9)(
[AndWriteNode(0...9)( [AndWriteNode(0...9)(
ConstantPathNode(0...3)(nil, ConstantReadNode(2...3)(), (0...2)), ConstantPathWriteNode(0...3)(
ConstantPathNode(0...3)(nil, ConstantReadNode(2...3)(), (0...2)),
nil,
nil
),
IntegerNode(8...9)(), IntegerNode(8...9)(),
(4...7) (4...7)
)] )]

View File

@ -2,10 +2,14 @@ ProgramNode(0...10)(
[], [],
StatementsNode(0...10)( StatementsNode(0...10)(
[OrWriteNode(0...10)( [OrWriteNode(0...10)(
ConstantPathNode(0...4)( ConstantPathWriteNode(0...4)(
ConstantReadNode(0...1)(), ConstantPathNode(0...4)(
ConstantReadNode(3...4)(), ConstantReadNode(0...1)(),
(1...3) ConstantReadNode(3...4)(),
(1...3)
),
nil,
nil
), ),
IntegerNode(9...10)(), IntegerNode(9...10)(),
(5...8) (5...8)

View File

@ -10,10 +10,14 @@ ProgramNode(0...15)(
[ParenthesesNode(2...15)( [ParenthesesNode(2...15)(
StatementsNode(3...14)( StatementsNode(3...14)(
[OperatorWriteNode(3...14)( [OperatorWriteNode(3...14)(
ConstantPathNode(3...7)( ConstantPathWriteNode(3...7)(
ConstantReadNode(3...4)(), ConstantPathNode(3...7)(
ConstantReadNode(6...7)(), ConstantReadNode(3...4)(),
(4...6) ConstantReadNode(6...7)(),
(4...6)
),
nil,
nil
), ),
(8...10), (8...10),
:*, :*,

View File

@ -2,7 +2,7 @@ ProgramNode(0...11)(
[:a], [:a],
StatementsNode(0...11)( StatementsNode(0...11)(
[OrWriteNode(0...11)( [OrWriteNode(0...11)(
LocalVariableReadNode(0...1)(:a, 0), LocalVariableWriteNode(0...1)(:a, 0, nil, (0...1), nil),
CallNode(6...11)( CallNode(6...11)(
CallNode(6...7)(nil, nil, (6...7), nil, nil, nil, nil, 2, "b"), CallNode(6...7)(nil, nil, (6...7), nil, nil, nil, nil, 2, "b"),
(7...8), (7...8),

View File

@ -2,10 +2,14 @@ ProgramNode(0...11)(
[], [],
StatementsNode(0...11)( StatementsNode(0...11)(
[OperatorWriteNode(0...11)( [OperatorWriteNode(0...11)(
ConstantPathNode(0...4)( ConstantPathWriteNode(0...4)(
ConstantReadNode(0...1)(), ConstantPathNode(0...4)(
ConstantReadNode(3...4)(), ConstantReadNode(0...1)(),
(1...3) ConstantReadNode(3...4)(),
(1...3)
),
nil,
nil
), ),
(5...7), (5...7),
:*, :*,

View File

@ -26,7 +26,7 @@ ProgramNode(0...40)(
"p" "p"
), ),
OperatorWriteNode(18...24)( OperatorWriteNode(18...24)(
LocalVariableReadNode(18...19)(:y, 0), LocalVariableWriteNode(18...19)(:y, 0, nil, (18...19), nil),
(20...22), (20...22),
:*, :*,
IntegerNode(23...24)() IntegerNode(23...24)()

View File

@ -2,7 +2,7 @@ ProgramNode(6...34)(
[:foo], [:foo],
StatementsNode(6...34)( StatementsNode(6...34)(
[OperatorWriteNode(6...24)( [OperatorWriteNode(6...24)(
LocalVariableReadNode(6...9)(:foo, 0), LocalVariableWriteNode(6...9)(:foo, 0, nil, (6...9), nil),
(10...12), (10...12),
:+, :+,
CallNode(21...24)(nil, nil, (21...24), nil, nil, nil, nil, 2, "bar") CallNode(21...24)(nil, nil, (21...24), nil, nil, nil, nil, 2, "bar")

View File

@ -611,7 +611,7 @@ ProgramNode(0...704)(
(543...546) (543...546)
), ),
OrWriteNode(551...561)( OrWriteNode(551...561)(
InstanceVariableReadNode(551...553)(), InstanceVariableWriteNode(551...553)((551...553), nil, nil),
StringNode(558...561)((558...560), (560...560), (560...561), ""), StringNode(558...561)((558...560), (560...560), (560...561), ""),
(554...557) (554...557)
), ),
@ -704,7 +704,7 @@ ProgramNode(0...704)(
(665...668) (665...668)
), ),
OrWriteNode(687...704)( OrWriteNode(687...704)(
InstanceVariableReadNode(687...689)(), InstanceVariableWriteNode(687...689)((687...689), nil, nil),
InterpolatedStringNode(694...704)( InterpolatedStringNode(694...704)(
(694...704), (694...704),
[StringNode(705...707)(nil, (705...707), nil, " "), [StringNode(705...707)(nil, (705...707), nil, " "),

View File

@ -2,42 +2,42 @@ ProgramNode(0...233)(
[:a, :h], [:a, :h],
StatementsNode(0...233)( StatementsNode(0...233)(
[OperatorWriteNode(0...6)( [OperatorWriteNode(0...6)(
LocalVariableReadNode(0...1)(:a, 0), LocalVariableWriteNode(0...1)(:a, 0, nil, (0...1), nil),
(2...4), (2...4),
:+, :+,
IntegerNode(5...6)() IntegerNode(5...6)()
), ),
OperatorWriteNode(7...13)( OperatorWriteNode(7...13)(
LocalVariableReadNode(7...8)(:a, 0), LocalVariableWriteNode(7...8)(:a, 0, nil, (7...8), nil),
(9...11), (9...11),
:-, :-,
IntegerNode(12...13)() IntegerNode(12...13)()
), ),
OperatorWriteNode(14...21)( OperatorWriteNode(14...21)(
LocalVariableReadNode(14...15)(:a, 0), LocalVariableWriteNode(14...15)(:a, 0, nil, (14...15), nil),
(16...19), (16...19),
:**, :**,
IntegerNode(20...21)() IntegerNode(20...21)()
), ),
OperatorWriteNode(22...28)( OperatorWriteNode(22...28)(
LocalVariableReadNode(22...23)(:a, 0), LocalVariableWriteNode(22...23)(:a, 0, nil, (22...23), nil),
(24...26), (24...26),
:*, :*,
IntegerNode(27...28)() IntegerNode(27...28)()
), ),
OperatorWriteNode(29...35)( OperatorWriteNode(29...35)(
LocalVariableReadNode(29...30)(:a, 0), LocalVariableWriteNode(29...30)(:a, 0, nil, (29...30), nil),
(31...33), (31...33),
:/, :/,
IntegerNode(34...35)() IntegerNode(34...35)()
), ),
AndWriteNode(36...43)( AndWriteNode(36...43)(
LocalVariableReadNode(36...37)(:a, 0), LocalVariableWriteNode(36...37)(:a, 0, nil, (36...37), nil),
CallNode(42...43)(nil, nil, (42...43), nil, nil, nil, nil, 2, "b"), CallNode(42...43)(nil, nil, (42...43), nil, nil, nil, nil, 2, "b"),
(38...41) (38...41)
), ),
OrWriteNode(44...51)( OrWriteNode(44...51)(
LocalVariableReadNode(44...45)(:a, 0), LocalVariableWriteNode(44...45)(:a, 0, nil, (44...45), nil),
IntegerNode(50...51)(), IntegerNode(50...51)(),
(46...49) (46...49)
), ),
@ -45,7 +45,7 @@ ProgramNode(0...233)(
ParenthesesNode(52...61)( ParenthesesNode(52...61)(
StatementsNode(53...60)( StatementsNode(53...60)(
[OrWriteNode(53...60)( [OrWriteNode(53...60)(
LocalVariableReadNode(53...54)(:a, 0), LocalVariableWriteNode(53...54)(:a, 0, nil, (53...54), nil),
IntegerNode(59...60)(), IntegerNode(59...60)(),
(55...58) (55...58)
)] )]
@ -66,7 +66,7 @@ ProgramNode(0...233)(
ParenthesesNode(66...76)( ParenthesesNode(66...76)(
StatementsNode(67...75)( StatementsNode(67...75)(
[OrWriteNode(67...75)( [OrWriteNode(67...75)(
LocalVariableReadNode(67...68)(:h, 0), LocalVariableWriteNode(67...68)(:h, 0, nil, (67...68), nil),
HashNode(73...75)((73...74), [], (74...75)), HashNode(73...75)((73...74), [], (74...75)),
(69...72) (69...72)
)] )]

View File

@ -7,7 +7,7 @@ ProgramNode(0...999)(
ConstantReadNode(7...8)(), ConstantReadNode(7...8)(),
StatementsNode(11...31)( StatementsNode(11...31)(
[OrWriteNode(11...31)( [OrWriteNode(11...31)(
LocalVariableReadNode(11...14)(:foo, 0), LocalVariableWriteNode(11...14)(:foo, 0, nil, (11...14), nil),
ParenthesesNode(19...31)( ParenthesesNode(19...31)(
StatementsNode(21...30)( StatementsNode(21...30)(
[MultiWriteNode(21...30)( [MultiWriteNode(21...30)(

View File

@ -2,22 +2,30 @@ ProgramNode(0...77)(
[], [],
StatementsNode(0...77)( StatementsNode(0...77)(
[OperatorWriteNode(0...8)( [OperatorWriteNode(0...8)(
ConstantPathNode(0...3)(nil, ConstantReadNode(2...3)(), (0...2)), ConstantPathWriteNode(0...3)(
ConstantPathNode(0...3)(nil, ConstantReadNode(2...3)(), (0...2)),
nil,
nil
),
(4...6), (4...6),
:+, :+,
IntegerNode(7...8)() IntegerNode(7...8)()
), ),
OperatorWriteNode(10...16)( OperatorWriteNode(10...16)(
ConstantReadNode(10...11)(), ConstantWriteNode(10...11)((10...11), nil, nil),
(12...14), (12...14),
:+, :+,
IntegerNode(15...16)() IntegerNode(15...16)()
), ),
OperatorWriteNode(18...27)( OperatorWriteNode(18...27)(
ConstantPathNode(18...22)( ConstantPathWriteNode(18...22)(
ConstantReadNode(18...19)(), ConstantPathNode(18...22)(
ConstantReadNode(21...22)(), ConstantReadNode(18...19)(),
(19...21) ConstantReadNode(21...22)(),
(19...21)
),
nil,
nil
), ),
(23...25), (23...25),
:+, :+,
@ -29,10 +37,14 @@ ProgramNode(0...77)(
nil, nil,
StatementsNode(36...45)( StatementsNode(36...45)(
[OrWriteNode(36...45)( [OrWriteNode(36...45)(
ConstantPathNode(36...39)( ConstantPathWriteNode(36...39)(
ConstantPathNode(36...39)(
nil,
ConstantReadNode(38...39)(),
(36...38)
),
nil, nil,
ConstantReadNode(38...39)(), nil
(36...38)
), ),
IntegerNode(44...45)(), IntegerNode(44...45)(),
(40...43) (40...43)
@ -52,10 +64,14 @@ ProgramNode(0...77)(
nil, nil,
StatementsNode(59...72)( StatementsNode(59...72)(
[OrWriteNode(59...72)( [OrWriteNode(59...72)(
ConstantPathNode(59...66)( ConstantPathWriteNode(59...66)(
SelfNode(59...63)(), ConstantPathNode(59...66)(
ConstantReadNode(65...66)(), SelfNode(59...63)(),
(63...65) ConstantReadNode(65...66)(),
(63...65)
),
nil,
nil
), ),
IntegerNode(71...72)(), IntegerNode(71...72)(),
(67...70) (67...70)

View File

@ -78,10 +78,24 @@ ProgramNode(0...64)(
:+ :+
), ),
OperatorWriteNode(32...47)( OperatorWriteNode(32...47)(
ConstantPathNode(32...38)( ConstantPathWriteNode(32...38)(
CallNode(32...35)(nil, nil, (32...35), nil, nil, nil, nil, 2, "foo"), ConstantPathNode(32...38)(
ConstantReadNode(37...38)(), CallNode(32...35)(
(35...37) nil,
nil,
(32...35),
nil,
nil,
nil,
nil,
2,
"foo"
),
ConstantReadNode(37...38)(),
(35...37)
),
nil,
nil
), ),
(39...41), (39...41),
:+, :+,

View File

@ -2,7 +2,7 @@ ProgramNode(0...22)(
[:foo], [:foo],
StatementsNode(0...22)( StatementsNode(0...22)(
[OperatorWriteNode(0...22)( [OperatorWriteNode(0...22)(
LocalVariableReadNode(0...3)(:foo, 0), LocalVariableWriteNode(0...3)(:foo, 0, nil, (0...3), nil),
(4...6), (4...6),
:+, :+,
RescueModifierNode(7...22)( RescueModifierNode(7...22)(

View File

@ -2,7 +2,7 @@ ProgramNode(0...437)(
[:foo], [:foo],
StatementsNode(0...437)( StatementsNode(0...437)(
[OperatorWriteNode(0...27)( [OperatorWriteNode(0...27)(
LocalVariableReadNode(0...3)(:foo, 0), LocalVariableWriteNode(0...3)(:foo, 0, nil, (0...3), nil),
(4...6), (4...6),
:+, :+,
CallNode(7...27)( CallNode(7...27)(
@ -34,7 +34,7 @@ ProgramNode(0...437)(
) )
), ),
OperatorWriteNode(29...57)( OperatorWriteNode(29...57)(
LocalVariableReadNode(29...32)(:foo, 0), LocalVariableWriteNode(29...32)(:foo, 0, nil, (29...32), nil),
(33...35), (33...35),
:+, :+,
RescueModifierNode(36...57)( RescueModifierNode(36...57)(
@ -300,10 +300,14 @@ ProgramNode(0...437)(
:+ :+
), ),
OrWriteNode(242...273)( OrWriteNode(242...273)(
ConstantPathNode(242...248)( ConstantPathWriteNode(242...248)(
LocalVariableReadNode(242...245)(:foo, 0), ConstantPathNode(242...248)(
ConstantReadNode(247...248)(), LocalVariableReadNode(242...245)(:foo, 0),
(245...247) ConstantReadNode(247...248)(),
(245...247)
),
nil,
nil
), ),
CallNode(253...273)( CallNode(253...273)(
nil, nil,
@ -335,10 +339,14 @@ ProgramNode(0...437)(
(249...252) (249...252)
), ),
OrWriteNode(275...307)( OrWriteNode(275...307)(
ConstantPathNode(275...281)( ConstantPathWriteNode(275...281)(
LocalVariableReadNode(275...278)(:foo, 0), ConstantPathNode(275...281)(
ConstantReadNode(280...281)(), LocalVariableReadNode(275...278)(:foo, 0),
(278...280) ConstantReadNode(280...281)(),
(278...280)
),
nil,
nil
), ),
RescueModifierNode(286...307)( RescueModifierNode(286...307)(
CallNode(286...296)( CallNode(286...296)(

View File

@ -2,11 +2,11 @@ ProgramNode(0...74)(
[:a, :b], [:a, :b],
StatementsNode(0...74)( StatementsNode(0...74)(
[OperatorWriteNode(0...18)( [OperatorWriteNode(0...18)(
LocalVariableReadNode(0...1)(:a, 0), LocalVariableWriteNode(0...1)(:a, 0, nil, (0...1), nil),
(2...4), (2...4),
:+, :+,
OperatorWriteNode(5...18)( OperatorWriteNode(5...18)(
LocalVariableReadNode(5...6)(:b, 0), LocalVariableWriteNode(5...6)(:b, 0, nil, (5...6), nil),
(7...9), (7...9),
:+, :+,
CallNode(10...18)( CallNode(10...18)(
@ -25,7 +25,7 @@ ProgramNode(0...74)(
) )
), ),
OperatorWriteNode(20...37)( OperatorWriteNode(20...37)(
LocalVariableReadNode(20...21)(:a, 0), LocalVariableWriteNode(20...21)(:a, 0, nil, (20...21), nil),
(22...24), (22...24),
:+, :+,
LocalVariableWriteNode(25...37)( LocalVariableWriteNode(25...37)(
@ -52,7 +52,7 @@ ProgramNode(0...74)(
:a, :a,
0, 0,
OperatorWriteNode(43...56)( OperatorWriteNode(43...56)(
LocalVariableReadNode(43...44)(:b, 0), LocalVariableWriteNode(43...44)(:b, 0, nil, (43...44), nil),
(45...47), (45...47),
:+, :+,
CallNode(48...56)( CallNode(48...56)(

View File

@ -2,7 +2,7 @@ ProgramNode(0...7)(
[:a], [:a],
StatementsNode(0...7)( StatementsNode(0...7)(
[AndWriteNode(0...7)( [AndWriteNode(0...7)(
LocalVariableReadNode(0...1)(:a, 0), LocalVariableWriteNode(0...1)(:a, 0, nil, (0...1), nil),
IntegerNode(6...7)(), IntegerNode(6...7)(),
(2...5) (2...5)
)] )]

View File

@ -2,19 +2,19 @@ ProgramNode(0...53)(
[:a], [:a],
StatementsNode(0...53)( StatementsNode(0...53)(
[OperatorWriteNode(0...11)( [OperatorWriteNode(0...11)(
ClassVariableReadNode(0...5)(), ClassVariableWriteNode(0...5)((0...5), nil, nil),
(6...8), (6...8),
:|, :|,
IntegerNode(9...11)() IntegerNode(9...11)()
), ),
OperatorWriteNode(13...20)( OperatorWriteNode(13...20)(
InstanceVariableReadNode(13...15)(), InstanceVariableWriteNode(13...15)((13...15), nil, nil),
(16...18), (16...18),
:|, :|,
IntegerNode(19...20)() IntegerNode(19...20)()
), ),
OperatorWriteNode(22...28)( OperatorWriteNode(22...28)(
LocalVariableReadNode(22...23)(:a, 0), LocalVariableWriteNode(22...23)(:a, 0, nil, (22...23), nil),
(24...26), (24...26),
:+, :+,
IntegerNode(27...28)() IntegerNode(27...28)()
@ -25,7 +25,7 @@ ProgramNode(0...53)(
nil, nil,
StatementsNode(37...48)( StatementsNode(37...48)(
[OperatorWriteNode(37...48)( [OperatorWriteNode(37...48)(
ClassVariableReadNode(37...42)(), ClassVariableWriteNode(37...42)((37...42), nil, nil),
(43...45), (43...45),
:|, :|,
IntegerNode(46...48)() IntegerNode(46...48)()

View File

@ -2,7 +2,7 @@ ProgramNode(0...12)(
[:foo], [:foo],
StatementsNode(0...12)( StatementsNode(0...12)(
[OperatorWriteNode(0...12)( [OperatorWriteNode(0...12)(
LocalVariableReadNode(0...3)(:foo, 0), LocalVariableWriteNode(0...3)(:foo, 0, nil, (0...3), nil),
(4...6), (4...6),
:+, :+,
CallNode(7...12)( CallNode(7...12)(

View File

@ -2,7 +2,7 @@ ProgramNode(0...7)(
[:a], [:a],
StatementsNode(0...7)( StatementsNode(0...7)(
[OrWriteNode(0...7)( [OrWriteNode(0...7)(
LocalVariableReadNode(0...1)(:a, 0), LocalVariableWriteNode(0...1)(:a, 0, nil, (0...1), nil),
IntegerNode(6...7)(), IntegerNode(6...7)(),
(2...5) (2...5)
)] )]

View File

@ -12261,6 +12261,10 @@ parse_expression_infix(yp_parser_t *parser, yp_node_t *node, yp_binding_power_t
case YP_NODE_INSTANCE_VARIABLE_READ_NODE: case YP_NODE_INSTANCE_VARIABLE_READ_NODE:
case YP_NODE_LOCAL_VARIABLE_READ_NODE: { case YP_NODE_LOCAL_VARIABLE_READ_NODE: {
parser_lex(parser); parser_lex(parser);
yp_token_t operator = not_provided(parser);
node = parse_target(parser, node, &operator, NULL);
yp_node_t *value = parse_expression(parser, binding_power, "Expected a value after &&="); yp_node_t *value = parse_expression(parser, binding_power, "Expected a value after &&=");
return (yp_node_t *) yp_and_write_node_create(parser, node, &token, value); return (yp_node_t *) yp_and_write_node_create(parser, node, &token, value);
} }
@ -12279,11 +12283,12 @@ parse_expression_infix(yp_parser_t *parser, yp_node_t *node, yp_binding_power_t
} }
parser_lex(parser); parser_lex(parser);
yp_node_t *target = (yp_node_t *) yp_local_variable_read_node_create(parser, &(yp_token_t) { .type = YP_TOKEN_IDENTIFIER, .start = message_loc.start, .end = message_loc.end }, 0);
yp_node_t *value = parse_expression(parser, binding_power, "Expected a value after &&=");
yp_node_destroy(parser, node); yp_token_t operator = not_provided(parser);
return (yp_node_t *) yp_and_write_node_create(parser, target, &token, value); node = parse_target(parser, node, &operator, NULL);
yp_node_t *value = parse_expression(parser, binding_power, "Expected a value after &&=");
return (yp_node_t *) yp_and_write_node_create(parser, node, &token, value);
} }
parser_lex(parser); parser_lex(parser);
@ -12323,6 +12328,9 @@ parse_expression_infix(yp_parser_t *parser, yp_node_t *node, yp_binding_power_t
case YP_NODE_LOCAL_VARIABLE_READ_NODE: { case YP_NODE_LOCAL_VARIABLE_READ_NODE: {
parser_lex(parser); parser_lex(parser);
yp_token_t operator = not_provided(parser);
node = parse_target(parser, node, &operator, NULL);
yp_node_t *value = parse_expression(parser, binding_power, "Expected a value after ||="); yp_node_t *value = parse_expression(parser, binding_power, "Expected a value after ||=");
return (yp_node_t *) yp_or_write_node_create(parser, node, &token, value); return (yp_node_t *) yp_or_write_node_create(parser, node, &token, value);
} }
@ -12341,11 +12349,12 @@ parse_expression_infix(yp_parser_t *parser, yp_node_t *node, yp_binding_power_t
} }
parser_lex(parser); parser_lex(parser);
yp_node_t *target = (yp_node_t *) yp_local_variable_read_node_create(parser, &(yp_token_t) { .type = YP_TOKEN_IDENTIFIER, .start = message_loc.start, .end = message_loc.end }, 0);
yp_node_t *value = parse_expression(parser, binding_power, "Expected a value after ||=");
yp_node_destroy(parser, node); yp_token_t operator = not_provided(parser);
return (yp_node_t *) yp_or_write_node_create(parser, target, &token, value); node = parse_target(parser, node, &operator, NULL);
yp_node_t *value = parse_expression(parser, binding_power, "Expected a value after ||=");
return (yp_node_t *) yp_or_write_node_create(parser, node, &token, value);
} }
parser_lex(parser); parser_lex(parser);
@ -12395,6 +12404,9 @@ parse_expression_infix(yp_parser_t *parser, yp_node_t *node, yp_binding_power_t
case YP_NODE_LOCAL_VARIABLE_READ_NODE: { case YP_NODE_LOCAL_VARIABLE_READ_NODE: {
parser_lex(parser); parser_lex(parser);
yp_token_t operator = not_provided(parser);
node = parse_target(parser, node, &operator, NULL);
yp_node_t *value = parse_expression(parser, binding_power, "Expected a value after the operator"); yp_node_t *value = parse_expression(parser, binding_power, "Expected a value after the operator");
return (yp_node_t *) yp_operator_write_node_create(parser, node, &token, value); return (yp_node_t *) yp_operator_write_node_create(parser, node, &token, value);
} }
@ -12413,11 +12425,12 @@ parse_expression_infix(yp_parser_t *parser, yp_node_t *node, yp_binding_power_t
} }
parser_lex(parser); parser_lex(parser);
yp_node_t *target = (yp_node_t *) yp_local_variable_read_node_create(parser, &(yp_token_t) { .type = YP_TOKEN_IDENTIFIER, .start = message_loc.start, .end = message_loc.end }, 0);
yp_node_t *value = parse_expression(parser, binding_power, "Expected a value after &&=");
yp_node_destroy(parser, node); yp_token_t operator = not_provided(parser);
return (yp_node_t *) yp_operator_write_node_create(parser, target, &token, value); node = parse_target(parser, node, &operator, NULL);
yp_node_t *value = parse_expression(parser, binding_power, "Expected a value after &&=");
return (yp_node_t *) yp_operator_write_node_create(parser, node, &token, value);
} }
yp_token_t operator = not_provided(parser); yp_token_t operator = not_provided(parser);