[ruby/yarp] Track block opening and closing locations
https://github.com/ruby/yarp/commit/7984e4ddc7
This commit is contained in:
parent
b9a2c96747
commit
a31b069a8a
@ -581,6 +581,8 @@ class ErrorsTest < Test::Unit::TestCase
|
|||||||
expected = LambdaNode(
|
expected = LambdaNode(
|
||||||
[:a, :b],
|
[:a, :b],
|
||||||
Location(),
|
Location(),
|
||||||
|
Location(),
|
||||||
|
Location(),
|
||||||
BlockParametersNode(
|
BlockParametersNode(
|
||||||
ParametersNode([RequiredParameterNode(:a), RequiredParameterNode(:b)], [], [], nil, [], nil, nil),
|
ParametersNode([RequiredParameterNode(:a), RequiredParameterNode(:b)], [], [], nil, [], nil, nil),
|
||||||
[],
|
[],
|
||||||
@ -924,6 +926,8 @@ class ErrorsTest < Test::Unit::TestCase
|
|||||||
expected = LambdaNode(
|
expected = LambdaNode(
|
||||||
[:"..."],
|
[:"..."],
|
||||||
Location(),
|
Location(),
|
||||||
|
Location(),
|
||||||
|
Location(),
|
||||||
BlockParametersNode(ParametersNode([], [], [], nil, [], ForwardingParameterNode(), nil), [], Location(), Location()),
|
BlockParametersNode(ParametersNode([], [], [], nil, [], ForwardingParameterNode(), nil), [], Location(), Location()),
|
||||||
nil
|
nil
|
||||||
)
|
)
|
||||||
|
@ -4,6 +4,8 @@ ProgramNode(0...92)(
|
|||||||
[LambdaNode(0...14)(
|
[LambdaNode(0...14)(
|
||||||
[:foo],
|
[:foo],
|
||||||
(0...2),
|
(0...2),
|
||||||
|
(12...13),
|
||||||
|
(13...14),
|
||||||
BlockParametersNode(2...11)(
|
BlockParametersNode(2...11)(
|
||||||
ParametersNode(6...9)(
|
ParametersNode(6...9)(
|
||||||
[RequiredParameterNode(6...9)(:foo)],
|
[RequiredParameterNode(6...9)(:foo)],
|
||||||
@ -23,6 +25,8 @@ ProgramNode(0...92)(
|
|||||||
LambdaNode(16...34)(
|
LambdaNode(16...34)(
|
||||||
[:x],
|
[:x],
|
||||||
(16...18),
|
(16...18),
|
||||||
|
(31...32),
|
||||||
|
(33...34),
|
||||||
BlockParametersNode(18...30)(
|
BlockParametersNode(18...30)(
|
||||||
ParametersNode(19...29)(
|
ParametersNode(19...29)(
|
||||||
[],
|
[],
|
||||||
@ -66,6 +70,8 @@ ProgramNode(0...92)(
|
|||||||
LambdaNode(36...51)(
|
LambdaNode(36...51)(
|
||||||
[:a],
|
[:a],
|
||||||
(36...38),
|
(36...38),
|
||||||
|
(49...50),
|
||||||
|
(50...51),
|
||||||
BlockParametersNode(38...48)(
|
BlockParametersNode(38...48)(
|
||||||
ParametersNode(39...47)(
|
ParametersNode(39...47)(
|
||||||
[],
|
[],
|
||||||
|
@ -323,6 +323,8 @@ ProgramNode(0...3743)(
|
|||||||
LambdaNode(343...353)(
|
LambdaNode(343...353)(
|
||||||
[],
|
[],
|
||||||
(343...345),
|
(343...345),
|
||||||
|
(346...347),
|
||||||
|
(352...353),
|
||||||
nil,
|
nil,
|
||||||
StatementsNode(348...351)([LocalVariableReadNode(348...351)(:bar, 1)])
|
StatementsNode(348...351)([LocalVariableReadNode(348...351)(:bar, 1)])
|
||||||
),
|
),
|
||||||
@ -868,6 +870,8 @@ ProgramNode(0...3743)(
|
|||||||
LambdaNode(916...926)(
|
LambdaNode(916...926)(
|
||||||
[],
|
[],
|
||||||
(916...918),
|
(916...918),
|
||||||
|
(919...920),
|
||||||
|
(925...926),
|
||||||
nil,
|
nil,
|
||||||
StatementsNode(921...924)(
|
StatementsNode(921...924)(
|
||||||
[LocalVariableReadNode(921...924)(:bar, 1)]
|
[LocalVariableReadNode(921...924)(:bar, 1)]
|
||||||
@ -876,6 +880,8 @@ ProgramNode(0...3743)(
|
|||||||
LambdaNode(930...940)(
|
LambdaNode(930...940)(
|
||||||
[],
|
[],
|
||||||
(930...932),
|
(930...932),
|
||||||
|
(933...934),
|
||||||
|
(939...940),
|
||||||
nil,
|
nil,
|
||||||
StatementsNode(935...938)(
|
StatementsNode(935...938)(
|
||||||
[LocalVariableReadNode(935...938)(:bar, 1)]
|
[LocalVariableReadNode(935...938)(:bar, 1)]
|
||||||
@ -2268,6 +2274,8 @@ ProgramNode(0...3743)(
|
|||||||
LambdaNode(1991...2001)(
|
LambdaNode(1991...2001)(
|
||||||
[],
|
[],
|
||||||
(1991...1993),
|
(1991...1993),
|
||||||
|
(1994...1995),
|
||||||
|
(2000...2001),
|
||||||
nil,
|
nil,
|
||||||
StatementsNode(1996...1999)(
|
StatementsNode(1996...1999)(
|
||||||
[LocalVariableReadNode(1996...1999)(:bar, 1)]
|
[LocalVariableReadNode(1996...1999)(:bar, 1)]
|
||||||
@ -2898,6 +2906,8 @@ ProgramNode(0...3743)(
|
|||||||
LambdaNode(2727...2737)(
|
LambdaNode(2727...2737)(
|
||||||
[],
|
[],
|
||||||
(2727...2729),
|
(2727...2729),
|
||||||
|
(2730...2731),
|
||||||
|
(2736...2737),
|
||||||
nil,
|
nil,
|
||||||
StatementsNode(2732...2735)(
|
StatementsNode(2732...2735)(
|
||||||
[LocalVariableReadNode(2732...2735)(:bar, 1)]
|
[LocalVariableReadNode(2732...2735)(:bar, 1)]
|
||||||
@ -3727,6 +3737,8 @@ ProgramNode(0...3743)(
|
|||||||
[LambdaNode(3647...3657)(
|
[LambdaNode(3647...3657)(
|
||||||
[],
|
[],
|
||||||
(3647...3649),
|
(3647...3649),
|
||||||
|
(3650...3651),
|
||||||
|
(3656...3657),
|
||||||
nil,
|
nil,
|
||||||
StatementsNode(3652...3655)(
|
StatementsNode(3652...3655)(
|
||||||
[LocalVariableReadNode(3652...3655)(:bar, 1)]
|
[LocalVariableReadNode(3652...3655)(:bar, 1)]
|
||||||
|
@ -4,6 +4,8 @@ ProgramNode(0...266)(
|
|||||||
[LambdaNode(0...21)(
|
[LambdaNode(0...21)(
|
||||||
[:a, :b, :c, :d],
|
[:a, :b, :c, :d],
|
||||||
(0...2),
|
(0...2),
|
||||||
|
(16...17),
|
||||||
|
(20...21),
|
||||||
BlockParametersNode(3...15)(
|
BlockParametersNode(3...15)(
|
||||||
ParametersNode(4...5)(
|
ParametersNode(4...5)(
|
||||||
[RequiredParameterNode(4...5)(:a)],
|
[RequiredParameterNode(4...5)(:a)],
|
||||||
@ -23,6 +25,8 @@ ProgramNode(0...266)(
|
|||||||
LambdaNode(23...39)(
|
LambdaNode(23...39)(
|
||||||
[],
|
[],
|
||||||
(23...25),
|
(23...25),
|
||||||
|
(26...28),
|
||||||
|
(36...39),
|
||||||
nil,
|
nil,
|
||||||
BeginNode(29...39)(
|
BeginNode(29...39)(
|
||||||
nil,
|
nil,
|
||||||
@ -36,6 +40,8 @@ ProgramNode(0...266)(
|
|||||||
LambdaNode(41...69)(
|
LambdaNode(41...69)(
|
||||||
[],
|
[],
|
||||||
(41...43),
|
(41...43),
|
||||||
|
(44...46),
|
||||||
|
(66...69),
|
||||||
nil,
|
nil,
|
||||||
BeginNode(47...69)(
|
BeginNode(47...69)(
|
||||||
nil,
|
nil,
|
||||||
@ -49,6 +55,8 @@ ProgramNode(0...266)(
|
|||||||
LambdaNode(71...81)(
|
LambdaNode(71...81)(
|
||||||
[],
|
[],
|
||||||
(71...73),
|
(71...73),
|
||||||
|
(74...75),
|
||||||
|
(80...81),
|
||||||
nil,
|
nil,
|
||||||
StatementsNode(76...79)(
|
StatementsNode(76...79)(
|
||||||
[CallNode(76...79)(nil, nil, (76...79), nil, nil, nil, nil, 2, "foo")]
|
[CallNode(76...79)(nil, nil, (76...79), nil, nil, nil, nil, 2, "foo")]
|
||||||
@ -57,6 +65,8 @@ ProgramNode(0...266)(
|
|||||||
LambdaNode(83...98)(
|
LambdaNode(83...98)(
|
||||||
[],
|
[],
|
||||||
(83...85),
|
(83...85),
|
||||||
|
(86...88),
|
||||||
|
(95...98),
|
||||||
nil,
|
nil,
|
||||||
StatementsNode(90...93)(
|
StatementsNode(90...93)(
|
||||||
[CallNode(90...93)(nil, nil, (90...93), nil, nil, nil, nil, 2, "foo")]
|
[CallNode(90...93)(nil, nil, (90...93), nil, nil, nil, nil, 2, "foo")]
|
||||||
@ -65,6 +75,8 @@ ProgramNode(0...266)(
|
|||||||
LambdaNode(100...129)(
|
LambdaNode(100...129)(
|
||||||
[:a, :b, :c, :d, :e],
|
[:a, :b, :c, :d, :e],
|
||||||
(100...102),
|
(100...102),
|
||||||
|
(124...125),
|
||||||
|
(128...129),
|
||||||
BlockParametersNode(103...123)(
|
BlockParametersNode(103...123)(
|
||||||
ParametersNode(103...123)(
|
ParametersNode(103...123)(
|
||||||
[RequiredParameterNode(103...104)(:a)],
|
[RequiredParameterNode(103...104)(:a)],
|
||||||
@ -90,6 +102,8 @@ ProgramNode(0...266)(
|
|||||||
LambdaNode(131...171)(
|
LambdaNode(131...171)(
|
||||||
[:a, :b, :c, :d, :e, :f, :g],
|
[:a, :b, :c, :d, :e, :f, :g],
|
||||||
(131...133),
|
(131...133),
|
||||||
|
(166...167),
|
||||||
|
(170...171),
|
||||||
BlockParametersNode(134...165)(
|
BlockParametersNode(134...165)(
|
||||||
ParametersNode(135...164)(
|
ParametersNode(135...164)(
|
||||||
[RequiredParameterNode(135...136)(:a)],
|
[RequiredParameterNode(135...136)(:a)],
|
||||||
@ -115,6 +129,8 @@ ProgramNode(0...266)(
|
|||||||
LambdaNode(173...218)(
|
LambdaNode(173...218)(
|
||||||
[:a, :b, :c, :d, :e, :f, :g],
|
[:a, :b, :c, :d, :e, :f, :g],
|
||||||
(173...175),
|
(173...175),
|
||||||
|
(208...210),
|
||||||
|
(215...218),
|
||||||
BlockParametersNode(176...207)(
|
BlockParametersNode(176...207)(
|
||||||
ParametersNode(177...206)(
|
ParametersNode(177...206)(
|
||||||
[RequiredParameterNode(177...178)(:a)],
|
[RequiredParameterNode(177...178)(:a)],
|
||||||
@ -140,6 +156,8 @@ ProgramNode(0...266)(
|
|||||||
LambdaNode(220...245)(
|
LambdaNode(220...245)(
|
||||||
[:a],
|
[:a],
|
||||||
(220...222),
|
(220...222),
|
||||||
|
(227...228),
|
||||||
|
(244...245),
|
||||||
BlockParametersNode(223...226)(
|
BlockParametersNode(223...226)(
|
||||||
ParametersNode(224...225)(
|
ParametersNode(224...225)(
|
||||||
[RequiredParameterNode(224...225)(:a)],
|
[RequiredParameterNode(224...225)(:a)],
|
||||||
@ -158,6 +176,8 @@ ProgramNode(0...266)(
|
|||||||
[LambdaNode(229...243)(
|
[LambdaNode(229...243)(
|
||||||
[:b],
|
[:b],
|
||||||
(229...231),
|
(229...231),
|
||||||
|
(234...235),
|
||||||
|
(242...243),
|
||||||
BlockParametersNode(232...233)(
|
BlockParametersNode(232...233)(
|
||||||
ParametersNode(232...233)(
|
ParametersNode(232...233)(
|
||||||
[RequiredParameterNode(232...233)(:b)],
|
[RequiredParameterNode(232...233)(:b)],
|
||||||
@ -193,6 +213,8 @@ ProgramNode(0...266)(
|
|||||||
LambdaNode(247...266)(
|
LambdaNode(247...266)(
|
||||||
[:a, :b, :c],
|
[:a, :b, :c],
|
||||||
(247...249),
|
(247...249),
|
||||||
|
(263...264),
|
||||||
|
(265...266),
|
||||||
BlockParametersNode(250...262)(
|
BlockParametersNode(250...262)(
|
||||||
ParametersNode(251...261)(
|
ParametersNode(251...261)(
|
||||||
[RequiredDestructuredParameterNode(251...257)(
|
[RequiredDestructuredParameterNode(251...257)(
|
||||||
|
@ -11,6 +11,8 @@ ProgramNode(0...18)(
|
|||||||
[LambdaNode(3...10)(
|
[LambdaNode(3...10)(
|
||||||
[],
|
[],
|
||||||
(3...5),
|
(3...5),
|
||||||
|
(8...9),
|
||||||
|
(9...10),
|
||||||
BlockParametersNode(5...7)(nil, [], (5...6), (6...7)),
|
BlockParametersNode(5...7)(nil, [], (5...6), (6...7)),
|
||||||
nil
|
nil
|
||||||
)],
|
)],
|
||||||
|
@ -10,6 +10,8 @@ ProgramNode(0...22)(
|
|||||||
[LambdaNode(2...13)(
|
[LambdaNode(2...13)(
|
||||||
[],
|
[],
|
||||||
(2...4),
|
(2...4),
|
||||||
|
(5...7),
|
||||||
|
(10...13),
|
||||||
nil,
|
nil,
|
||||||
StatementsNode(8...9)([IntegerNode(8...9)()])
|
StatementsNode(8...9)([IntegerNode(8...9)()])
|
||||||
)]
|
)]
|
||||||
|
@ -10,6 +10,8 @@ ProgramNode(0...19)(
|
|||||||
[LambdaNode(2...10)(
|
[LambdaNode(2...10)(
|
||||||
[],
|
[],
|
||||||
(2...4),
|
(2...4),
|
||||||
|
(5...6),
|
||||||
|
(9...10),
|
||||||
nil,
|
nil,
|
||||||
StatementsNode(7...8)([IntegerNode(7...8)()])
|
StatementsNode(7...8)([IntegerNode(7...8)()])
|
||||||
)]
|
)]
|
||||||
|
@ -313,6 +313,8 @@ ProgramNode(0...747)(
|
|||||||
[LambdaNode(446...460)(
|
[LambdaNode(446...460)(
|
||||||
[:b],
|
[:b],
|
||||||
(446...448),
|
(446...448),
|
||||||
|
(452...453),
|
||||||
|
(459...460),
|
||||||
BlockParametersNode(448...451)(
|
BlockParametersNode(448...451)(
|
||||||
ParametersNode(449...450)(
|
ParametersNode(449...450)(
|
||||||
[RequiredParameterNode(449...450)(:b)],
|
[RequiredParameterNode(449...450)(:b)],
|
||||||
|
@ -10,6 +10,8 @@ ProgramNode(0...19)(
|
|||||||
[LambdaNode(2...19)(
|
[LambdaNode(2...19)(
|
||||||
[],
|
[],
|
||||||
(2...4),
|
(2...4),
|
||||||
|
(7...8),
|
||||||
|
(18...19),
|
||||||
BlockParametersNode(4...6)(nil, [], (4...5), (5...6)),
|
BlockParametersNode(4...6)(nil, [], (4...5), (5...6)),
|
||||||
StatementsNode(9...17)(
|
StatementsNode(9...17)(
|
||||||
[CallNode(9...17)(
|
[CallNode(9...17)(
|
||||||
|
@ -4,6 +4,8 @@ ProgramNode(0...25)(
|
|||||||
[LambdaNode(0...25)(
|
[LambdaNode(0...25)(
|
||||||
[:a, :b],
|
[:a, :b],
|
||||||
(0...2),
|
(0...2),
|
||||||
|
(13...14),
|
||||||
|
(24...25),
|
||||||
BlockParametersNode(2...12)(
|
BlockParametersNode(2...12)(
|
||||||
ParametersNode(3...11)(
|
ParametersNode(3...11)(
|
||||||
[RequiredParameterNode(3...4)(:a)],
|
[RequiredParameterNode(3...4)(:a)],
|
||||||
|
@ -4,6 +4,8 @@ ProgramNode(0...11)(
|
|||||||
[LambdaNode(0...11)(
|
[LambdaNode(0...11)(
|
||||||
[],
|
[],
|
||||||
(0...2),
|
(0...2),
|
||||||
|
(5...7),
|
||||||
|
(8...11),
|
||||||
BlockParametersNode(2...4)(nil, [], (2...3), (3...4)),
|
BlockParametersNode(2...4)(nil, [], (2...3), (3...4)),
|
||||||
nil
|
nil
|
||||||
)]
|
)]
|
||||||
|
@ -6,7 +6,9 @@ ProgramNode(0...46)(
|
|||||||
nil,
|
nil,
|
||||||
(0...1),
|
(0...1),
|
||||||
nil,
|
nil,
|
||||||
ArgumentsNode(2...11)([LambdaNode(2...11)([], (2...4), nil, nil)]),
|
ArgumentsNode(2...11)(
|
||||||
|
[LambdaNode(2...11)([], (2...4), (5...7), (8...11), nil, nil)]
|
||||||
|
),
|
||||||
nil,
|
nil,
|
||||||
nil,
|
nil,
|
||||||
0,
|
0,
|
||||||
@ -17,7 +19,9 @@ ProgramNode(0...46)(
|
|||||||
nil,
|
nil,
|
||||||
(13...14),
|
(13...14),
|
||||||
nil,
|
nil,
|
||||||
ArgumentsNode(15...20)([LambdaNode(15...20)([], (15...17), nil, nil)]),
|
ArgumentsNode(15...20)(
|
||||||
|
[LambdaNode(15...20)([], (15...17), (18...19), (19...20), nil, nil)]
|
||||||
|
),
|
||||||
nil,
|
nil,
|
||||||
nil,
|
nil,
|
||||||
0,
|
0,
|
||||||
@ -32,6 +36,8 @@ ProgramNode(0...46)(
|
|||||||
[LambdaNode(24...35)(
|
[LambdaNode(24...35)(
|
||||||
[],
|
[],
|
||||||
(24...26),
|
(24...26),
|
||||||
|
(29...31),
|
||||||
|
(32...35),
|
||||||
BlockParametersNode(26...28)(nil, [], (26...27), (27...28)),
|
BlockParametersNode(26...28)(nil, [], (26...27), (27...28)),
|
||||||
nil
|
nil
|
||||||
)]
|
)]
|
||||||
@ -50,6 +56,8 @@ ProgramNode(0...46)(
|
|||||||
[LambdaNode(39...46)(
|
[LambdaNode(39...46)(
|
||||||
[],
|
[],
|
||||||
(39...41),
|
(39...41),
|
||||||
|
(44...45),
|
||||||
|
(45...46),
|
||||||
BlockParametersNode(41...43)(nil, [], (41...42), (42...43)),
|
BlockParametersNode(41...43)(nil, [], (41...42), (42...43)),
|
||||||
nil
|
nil
|
||||||
)]
|
)]
|
||||||
|
@ -4,6 +4,8 @@ ProgramNode(0...5)(
|
|||||||
[LambdaNode(0...5)(
|
[LambdaNode(0...5)(
|
||||||
[:a],
|
[:a],
|
||||||
(0...2),
|
(0...2),
|
||||||
|
(3...4),
|
||||||
|
(4...5),
|
||||||
BlockParametersNode(2...3)(
|
BlockParametersNode(2...3)(
|
||||||
ParametersNode(2...3)(
|
ParametersNode(2...3)(
|
||||||
[RequiredParameterNode(2...3)(:a)],
|
[RequiredParameterNode(2...3)(:a)],
|
||||||
|
@ -4,6 +4,8 @@ ProgramNode(0...23)(
|
|||||||
[LambdaNode(0...23)(
|
[LambdaNode(0...23)(
|
||||||
[:b, :c, :d, :e, :f],
|
[:b, :c, :d, :e, :f],
|
||||||
(0...2),
|
(0...2),
|
||||||
|
(21...22),
|
||||||
|
(22...23),
|
||||||
BlockParametersNode(2...21)(
|
BlockParametersNode(2...21)(
|
||||||
ParametersNode(3...20)(
|
ParametersNode(3...20)(
|
||||||
[RequiredParameterNode(3...4)(:b)],
|
[RequiredParameterNode(3...4)(:b)],
|
||||||
|
@ -10,6 +10,8 @@ ProgramNode(0...25)(
|
|||||||
[LambdaNode(2...25)(
|
[LambdaNode(2...25)(
|
||||||
[],
|
[],
|
||||||
(2...4),
|
(2...4),
|
||||||
|
(8...10),
|
||||||
|
(22...25),
|
||||||
BlockParametersNode(5...7)(nil, [], (5...6), (6...7)),
|
BlockParametersNode(5...7)(nil, [], (5...6), (6...7)),
|
||||||
StatementsNode(11...21)(
|
StatementsNode(11...21)(
|
||||||
[CallNode(11...21)(
|
[CallNode(11...21)(
|
||||||
|
@ -10,6 +10,8 @@ ProgramNode(0...26)(
|
|||||||
[LambdaNode(2...26)(
|
[LambdaNode(2...26)(
|
||||||
[],
|
[],
|
||||||
(2...4),
|
(2...4),
|
||||||
|
(8...10),
|
||||||
|
(23...26),
|
||||||
BlockParametersNode(5...7)(nil, [], (5...6), (6...7)),
|
BlockParametersNode(5...7)(nil, [], (5...6), (6...7)),
|
||||||
StatementsNode(11...22)(
|
StatementsNode(11...22)(
|
||||||
[CallNode(11...22)(
|
[CallNode(11...22)(
|
||||||
|
@ -4,6 +4,8 @@ ProgramNode(0...13)(
|
|||||||
[LambdaNode(0...13)(
|
[LambdaNode(0...13)(
|
||||||
[:k],
|
[:k],
|
||||||
(0...2),
|
(0...2),
|
||||||
|
(10...11),
|
||||||
|
(12...13),
|
||||||
BlockParametersNode(3...9)(
|
BlockParametersNode(3...9)(
|
||||||
ParametersNode(4...8)(
|
ParametersNode(4...8)(
|
||||||
[],
|
[],
|
||||||
|
@ -4,6 +4,8 @@ ProgramNode(0...11)(
|
|||||||
[LambdaNode(0...11)(
|
[LambdaNode(0...11)(
|
||||||
[:k],
|
[:k],
|
||||||
(0...2),
|
(0...2),
|
||||||
|
(8...9),
|
||||||
|
(10...11),
|
||||||
BlockParametersNode(3...7)(
|
BlockParametersNode(3...7)(
|
||||||
ParametersNode(4...6)(
|
ParametersNode(4...6)(
|
||||||
[],
|
[],
|
||||||
|
@ -4,6 +4,8 @@ ProgramNode(0...11)(
|
|||||||
[LambdaNode(0...11)(
|
[LambdaNode(0...11)(
|
||||||
[:a, :b],
|
[:a, :b],
|
||||||
(0...2),
|
(0...2),
|
||||||
|
(9...10),
|
||||||
|
(10...11),
|
||||||
BlockParametersNode(2...8)(
|
BlockParametersNode(2...8)(
|
||||||
ParametersNode(3...4)(
|
ParametersNode(3...4)(
|
||||||
[RequiredParameterNode(3...4)(:a)],
|
[RequiredParameterNode(3...4)(:a)],
|
||||||
|
@ -46,12 +46,16 @@ ProgramNode(0...80)(
|
|||||||
LambdaNode(33...41)(
|
LambdaNode(33...41)(
|
||||||
[],
|
[],
|
||||||
(33...35),
|
(33...35),
|
||||||
|
(38...39),
|
||||||
|
(40...41),
|
||||||
BlockParametersNode(35...37)(nil, [], (35...36), (36...37)),
|
BlockParametersNode(35...37)(nil, [], (35...36), (36...37)),
|
||||||
nil
|
nil
|
||||||
),
|
),
|
||||||
LambdaNode(42...51)(
|
LambdaNode(42...51)(
|
||||||
[:a],
|
[:a],
|
||||||
(42...44),
|
(42...44),
|
||||||
|
(48...49),
|
||||||
|
(50...51),
|
||||||
BlockParametersNode(44...47)(
|
BlockParametersNode(44...47)(
|
||||||
ParametersNode(45...46)(
|
ParametersNode(45...46)(
|
||||||
[RequiredParameterNode(45...46)(:a)],
|
[RequiredParameterNode(45...46)(:a)],
|
||||||
@ -71,6 +75,8 @@ ProgramNode(0...80)(
|
|||||||
LambdaNode(52...64)(
|
LambdaNode(52...64)(
|
||||||
[:a, :b],
|
[:a, :b],
|
||||||
(52...54),
|
(52...54),
|
||||||
|
(61...62),
|
||||||
|
(63...64),
|
||||||
BlockParametersNode(54...60)(
|
BlockParametersNode(54...60)(
|
||||||
ParametersNode(55...59)(
|
ParametersNode(55...59)(
|
||||||
[RequiredParameterNode(55...56)(:a),
|
[RequiredParameterNode(55...56)(:a),
|
||||||
@ -91,6 +97,8 @@ ProgramNode(0...80)(
|
|||||||
LambdaNode(65...80)(
|
LambdaNode(65...80)(
|
||||||
[:a, :b, :c],
|
[:a, :b, :c],
|
||||||
(65...67),
|
(65...67),
|
||||||
|
(77...78),
|
||||||
|
(79...80),
|
||||||
BlockParametersNode(67...76)(
|
BlockParametersNode(67...76)(
|
||||||
ParametersNode(68...72)(
|
ParametersNode(68...72)(
|
||||||
[RequiredParameterNode(68...69)(:a),
|
[RequiredParameterNode(68...69)(:a),
|
||||||
|
@ -4,6 +4,8 @@ ProgramNode(0...22)(
|
|||||||
[LambdaNode(0...16)(
|
[LambdaNode(0...16)(
|
||||||
[],
|
[],
|
||||||
(0...2),
|
(0...2),
|
||||||
|
(3...4),
|
||||||
|
(15...16),
|
||||||
nil,
|
nil,
|
||||||
StatementsNode(7...14)(
|
StatementsNode(7...14)(
|
||||||
[CallNode(7...14)(
|
[CallNode(7...14)(
|
||||||
|
@ -9,6 +9,8 @@ ProgramNode(0...14)(
|
|||||||
[LambdaNode(3...12)(
|
[LambdaNode(3...12)(
|
||||||
[:foo],
|
[:foo],
|
||||||
(3...5),
|
(3...5),
|
||||||
|
(10...11),
|
||||||
|
(11...12),
|
||||||
BlockParametersNode(6...9)(
|
BlockParametersNode(6...9)(
|
||||||
ParametersNode(6...9)(
|
ParametersNode(6...9)(
|
||||||
[RequiredParameterNode(6...9)(:foo)],
|
[RequiredParameterNode(6...9)(:foo)],
|
||||||
|
@ -55,6 +55,8 @@ ProgramNode(0...56)(
|
|||||||
LambdaNode(35...56)(
|
LambdaNode(35...56)(
|
||||||
[],
|
[],
|
||||||
(35...37),
|
(35...37),
|
||||||
|
(38...40),
|
||||||
|
(53...56),
|
||||||
nil,
|
nil,
|
||||||
StatementsNode(41...52)(
|
StatementsNode(41...52)(
|
||||||
[CallNode(41...52)(
|
[CallNode(41...52)(
|
||||||
|
@ -4,6 +4,8 @@ ProgramNode(0...19)(
|
|||||||
[LambdaNode(0...12)(
|
[LambdaNode(0...12)(
|
||||||
[:scope],
|
[:scope],
|
||||||
(0...2),
|
(0...2),
|
||||||
|
(10...11),
|
||||||
|
(11...12),
|
||||||
BlockParametersNode(2...9)(
|
BlockParametersNode(2...9)(
|
||||||
ParametersNode(3...8)(
|
ParametersNode(3...8)(
|
||||||
[RequiredParameterNode(3...8)(:scope)],
|
[RequiredParameterNode(3...8)(:scope)],
|
||||||
|
@ -4,6 +4,8 @@ ProgramNode(0...46)(
|
|||||||
[LambdaNode(0...12)(
|
[LambdaNode(0...12)(
|
||||||
[],
|
[],
|
||||||
(0...2),
|
(0...2),
|
||||||
|
(10...11),
|
||||||
|
(11...12),
|
||||||
BlockParametersNode(2...9)(
|
BlockParametersNode(2...9)(
|
||||||
ParametersNode(3...8)(
|
ParametersNode(3...8)(
|
||||||
[],
|
[],
|
||||||
|
@ -4,6 +4,8 @@ ProgramNode(0...65)(
|
|||||||
[LambdaNode(0...17)(
|
[LambdaNode(0...17)(
|
||||||
[],
|
[],
|
||||||
(0...2),
|
(0...2),
|
||||||
|
(3...5),
|
||||||
|
(14...17),
|
||||||
nil,
|
nil,
|
||||||
StatementsNode(6...13)(
|
StatementsNode(6...13)(
|
||||||
[CallNode(6...13)(
|
[CallNode(6...13)(
|
||||||
@ -34,6 +36,8 @@ ProgramNode(0...65)(
|
|||||||
LambdaNode(19...32)(
|
LambdaNode(19...32)(
|
||||||
[],
|
[],
|
||||||
(19...21),
|
(19...21),
|
||||||
|
(22...23),
|
||||||
|
(31...32),
|
||||||
nil,
|
nil,
|
||||||
StatementsNode(24...31)(
|
StatementsNode(24...31)(
|
||||||
[CallNode(24...31)(
|
[CallNode(24...31)(
|
||||||
|
@ -7,6 +7,8 @@ ProgramNode(0...19)(
|
|||||||
LambdaNode(4...19)(
|
LambdaNode(4...19)(
|
||||||
[:args],
|
[:args],
|
||||||
(4...6),
|
(4...6),
|
||||||
|
(13...15),
|
||||||
|
(16...19),
|
||||||
BlockParametersNode(7...12)(
|
BlockParametersNode(7...12)(
|
||||||
ParametersNode(7...12)(
|
ParametersNode(7...12)(
|
||||||
[],
|
[],
|
||||||
|
@ -4,6 +4,8 @@ ProgramNode(0...14)(
|
|||||||
[LambdaNode(0...14)(
|
[LambdaNode(0...14)(
|
||||||
[:arg],
|
[:arg],
|
||||||
(0...2),
|
(0...2),
|
||||||
|
(12...13),
|
||||||
|
(13...14),
|
||||||
BlockParametersNode(3...11)(
|
BlockParametersNode(3...11)(
|
||||||
ParametersNode(4...10)(
|
ParametersNode(4...10)(
|
||||||
[],
|
[],
|
||||||
|
@ -4,6 +4,8 @@ ProgramNode(0...17)(
|
|||||||
[LambdaNode(0...17)(
|
[LambdaNode(0...17)(
|
||||||
[],
|
[],
|
||||||
(0...2),
|
(0...2),
|
||||||
|
(3...5),
|
||||||
|
(14...17),
|
||||||
nil,
|
nil,
|
||||||
BeginNode(6...17)(
|
BeginNode(6...17)(
|
||||||
nil,
|
nil,
|
||||||
|
@ -10,6 +10,8 @@ ProgramNode(0...24)(
|
|||||||
[LambdaNode(2...24)(
|
[LambdaNode(2...24)(
|
||||||
[],
|
[],
|
||||||
(2...4),
|
(2...4),
|
||||||
|
(7...9),
|
||||||
|
(21...24),
|
||||||
BlockParametersNode(4...6)(nil, [], (4...5), (5...6)),
|
BlockParametersNode(4...6)(nil, [], (4...5), (5...6)),
|
||||||
StatementsNode(10...20)(
|
StatementsNode(10...20)(
|
||||||
[CallNode(10...20)(
|
[CallNode(10...20)(
|
||||||
|
@ -10,6 +10,8 @@ ProgramNode(0...28)(
|
|||||||
[LambdaNode(2...15)(
|
[LambdaNode(2...15)(
|
||||||
[],
|
[],
|
||||||
(2...4),
|
(2...4),
|
||||||
|
(5...6),
|
||||||
|
(14...15),
|
||||||
nil,
|
nil,
|
||||||
StatementsNode(7...13)(
|
StatementsNode(7...13)(
|
||||||
[SymbolNode(7...13)((7...8), (8...13), nil, "hello")]
|
[SymbolNode(7...13)((7...8), (8...13), nil, "hello")]
|
||||||
|
@ -10,6 +10,8 @@ ProgramNode(0...41)(
|
|||||||
[LambdaNode(2...20)(
|
[LambdaNode(2...20)(
|
||||||
[:a],
|
[:a],
|
||||||
(2...4),
|
(2...4),
|
||||||
|
(17...18),
|
||||||
|
(19...20),
|
||||||
BlockParametersNode(4...16)(
|
BlockParametersNode(4...16)(
|
||||||
ParametersNode(5...15)(
|
ParametersNode(5...15)(
|
||||||
[],
|
[],
|
||||||
@ -20,6 +22,8 @@ ProgramNode(0...41)(
|
|||||||
LambdaNode(9...15)(
|
LambdaNode(9...15)(
|
||||||
[],
|
[],
|
||||||
(9...11),
|
(9...11),
|
||||||
|
(11...12),
|
||||||
|
(14...15),
|
||||||
nil,
|
nil,
|
||||||
StatementsNode(12...14)(
|
StatementsNode(12...14)(
|
||||||
[CallNode(12...14)(
|
[CallNode(12...14)(
|
||||||
@ -63,6 +67,8 @@ ProgramNode(0...41)(
|
|||||||
[LambdaNode(24...41)(
|
[LambdaNode(24...41)(
|
||||||
[:a],
|
[:a],
|
||||||
(24...26),
|
(24...26),
|
||||||
|
(38...39),
|
||||||
|
(40...41),
|
||||||
BlockParametersNode(26...37)(
|
BlockParametersNode(26...37)(
|
||||||
ParametersNode(27...36)(
|
ParametersNode(27...36)(
|
||||||
[],
|
[],
|
||||||
@ -74,6 +80,8 @@ ProgramNode(0...41)(
|
|||||||
LambdaNode(30...36)(
|
LambdaNode(30...36)(
|
||||||
[],
|
[],
|
||||||
(30...32),
|
(30...32),
|
||||||
|
(32...33),
|
||||||
|
(35...36),
|
||||||
nil,
|
nil,
|
||||||
StatementsNode(33...35)(
|
StatementsNode(33...35)(
|
||||||
[CallNode(33...35)(
|
[CallNode(33...35)(
|
||||||
|
@ -4,6 +4,8 @@ ProgramNode(0...26)(
|
|||||||
[LambdaNode(0...8)(
|
[LambdaNode(0...8)(
|
||||||
[:*],
|
[:*],
|
||||||
(0...2),
|
(0...2),
|
||||||
|
(5...6),
|
||||||
|
(7...8),
|
||||||
BlockParametersNode(3...4)(
|
BlockParametersNode(3...4)(
|
||||||
ParametersNode(3...4)(
|
ParametersNode(3...4)(
|
||||||
[],
|
[],
|
||||||
@ -20,7 +22,7 @@ ProgramNode(0...26)(
|
|||||||
),
|
),
|
||||||
nil
|
nil
|
||||||
),
|
),
|
||||||
LambdaNode(10...19)([], (10...12), nil, nil),
|
LambdaNode(10...19)([], (10...12), (13...15), (16...19), nil, nil),
|
||||||
LambdaNode(21...26)([], (21...23), nil, nil)]
|
LambdaNode(21...26)([], (21...23), (23...24), (25...26), nil, nil)]
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
@ -4,6 +4,8 @@ ProgramNode(0...21)(
|
|||||||
[LambdaNode(0...10)(
|
[LambdaNode(0...10)(
|
||||||
[:a],
|
[:a],
|
||||||
(0...2),
|
(0...2),
|
||||||
|
(7...8),
|
||||||
|
(9...10),
|
||||||
BlockParametersNode(3...6)(
|
BlockParametersNode(3...6)(
|
||||||
ParametersNode(4...5)(
|
ParametersNode(4...5)(
|
||||||
[RequiredParameterNode(4...5)(:a)],
|
[RequiredParameterNode(4...5)(:a)],
|
||||||
@ -23,6 +25,8 @@ ProgramNode(0...21)(
|
|||||||
LambdaNode(12...21)(
|
LambdaNode(12...21)(
|
||||||
[:a],
|
[:a],
|
||||||
(12...14),
|
(12...14),
|
||||||
|
(18...19),
|
||||||
|
(20...21),
|
||||||
BlockParametersNode(14...17)(
|
BlockParametersNode(14...17)(
|
||||||
ParametersNode(15...16)(
|
ParametersNode(15...16)(
|
||||||
[RequiredParameterNode(15...16)(:a)],
|
[RequiredParameterNode(15...16)(:a)],
|
||||||
|
@ -4,6 +4,8 @@ ProgramNode(0...22)(
|
|||||||
[LambdaNode(0...11)(
|
[LambdaNode(0...11)(
|
||||||
[:a],
|
[:a],
|
||||||
(0...2),
|
(0...2),
|
||||||
|
(8...9),
|
||||||
|
(10...11),
|
||||||
BlockParametersNode(3...7)(
|
BlockParametersNode(3...7)(
|
||||||
ParametersNode(3...7)(
|
ParametersNode(3...7)(
|
||||||
[],
|
[],
|
||||||
@ -23,6 +25,8 @@ ProgramNode(0...22)(
|
|||||||
LambdaNode(13...22)(
|
LambdaNode(13...22)(
|
||||||
[:a],
|
[:a],
|
||||||
(13...15),
|
(13...15),
|
||||||
|
(19...20),
|
||||||
|
(21...22),
|
||||||
BlockParametersNode(16...18)(
|
BlockParametersNode(16...18)(
|
||||||
ParametersNode(16...18)(
|
ParametersNode(16...18)(
|
||||||
[],
|
[],
|
||||||
|
@ -4,6 +4,8 @@ ProgramNode(0...19)(
|
|||||||
[LambdaNode(0...19)(
|
[LambdaNode(0...19)(
|
||||||
[:a, :foo, :bar],
|
[:a, :foo, :bar],
|
||||||
(0...2),
|
(0...2),
|
||||||
|
(16...17),
|
||||||
|
(18...19),
|
||||||
BlockParametersNode(2...15)(
|
BlockParametersNode(2...15)(
|
||||||
ParametersNode(3...4)(
|
ParametersNode(3...4)(
|
||||||
[RequiredParameterNode(3...4)(:a)],
|
[RequiredParameterNode(3...4)(:a)],
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
ProgramNode(0...5)(
|
ProgramNode(0...5)(
|
||||||
[],
|
[],
|
||||||
StatementsNode(0...5)([LambdaNode(0...5)([], (0...2), nil, nil)])
|
StatementsNode(0...5)(
|
||||||
|
[LambdaNode(0...5)([], (0...2), (2...3), (4...5), nil, nil)]
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
@ -1468,8 +1468,12 @@ nodes:
|
|||||||
child_nodes:
|
child_nodes:
|
||||||
- name: locals
|
- name: locals
|
||||||
type: constant[]
|
type: constant[]
|
||||||
|
- name: operator_loc
|
||||||
|
type: location
|
||||||
- name: opening_loc
|
- name: opening_loc
|
||||||
type: location
|
type: location
|
||||||
|
- name: closing_loc
|
||||||
|
type: location
|
||||||
- name: parameters
|
- name: parameters
|
||||||
type: node?
|
type: node?
|
||||||
kind: BlockParametersNode
|
kind: BlockParametersNode
|
||||||
|
25
yarp/yarp.c
25
yarp/yarp.c
@ -2931,10 +2931,11 @@ static yp_lambda_node_t *
|
|||||||
yp_lambda_node_create(
|
yp_lambda_node_create(
|
||||||
yp_parser_t *parser,
|
yp_parser_t *parser,
|
||||||
yp_constant_id_list_t *locals,
|
yp_constant_id_list_t *locals,
|
||||||
|
const yp_token_t *operator,
|
||||||
const yp_token_t *opening,
|
const yp_token_t *opening,
|
||||||
|
const yp_token_t *closing,
|
||||||
yp_block_parameters_node_t *parameters,
|
yp_block_parameters_node_t *parameters,
|
||||||
yp_node_t *body,
|
yp_node_t *body
|
||||||
const yp_token_t *closing
|
|
||||||
) {
|
) {
|
||||||
yp_lambda_node_t *node = YP_ALLOC_NODE(parser, yp_lambda_node_t);
|
yp_lambda_node_t *node = YP_ALLOC_NODE(parser, yp_lambda_node_t);
|
||||||
|
|
||||||
@ -2942,12 +2943,14 @@ yp_lambda_node_create(
|
|||||||
{
|
{
|
||||||
.type = YP_NODE_LAMBDA_NODE,
|
.type = YP_NODE_LAMBDA_NODE,
|
||||||
.location = {
|
.location = {
|
||||||
.start = opening->start,
|
.start = operator->start,
|
||||||
.end = closing->end
|
.end = closing->end
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
.locals = *locals,
|
.locals = *locals,
|
||||||
|
.operator_loc = YP_LOCATION_TOKEN_VALUE(operator),
|
||||||
.opening_loc = YP_LOCATION_TOKEN_VALUE(opening),
|
.opening_loc = YP_LOCATION_TOKEN_VALUE(opening),
|
||||||
|
.closing_loc = YP_LOCATION_TOKEN_VALUE(closing),
|
||||||
.parameters = parameters,
|
.parameters = parameters,
|
||||||
.body = body
|
.body = body
|
||||||
};
|
};
|
||||||
@ -12424,25 +12427,25 @@ parse_expression_prefix(yp_parser_t *parser, yp_binding_power_t binding_power) {
|
|||||||
yp_accepts_block_stack_push(parser, true);
|
yp_accepts_block_stack_push(parser, true);
|
||||||
parser_lex(parser);
|
parser_lex(parser);
|
||||||
|
|
||||||
yp_token_t opening = parser->previous;
|
yp_token_t operator = parser->previous;
|
||||||
yp_parser_scope_push(parser, false);
|
yp_parser_scope_push(parser, false);
|
||||||
yp_block_parameters_node_t *params;
|
yp_block_parameters_node_t *params;
|
||||||
|
|
||||||
switch (parser->current.type) {
|
switch (parser->current.type) {
|
||||||
case YP_TOKEN_PARENTHESIS_LEFT: {
|
case YP_TOKEN_PARENTHESIS_LEFT: {
|
||||||
yp_token_t block_parameters_opening = parser->current;
|
yp_token_t opening = parser->current;
|
||||||
parser_lex(parser);
|
parser_lex(parser);
|
||||||
|
|
||||||
if (match_type_p(parser, YP_TOKEN_PARENTHESIS_RIGHT)) {
|
if (match_type_p(parser, YP_TOKEN_PARENTHESIS_RIGHT)) {
|
||||||
params = yp_block_parameters_node_create(parser, NULL, &block_parameters_opening);
|
params = yp_block_parameters_node_create(parser, NULL, &opening);
|
||||||
} else {
|
} else {
|
||||||
params = parse_block_parameters(parser, false, &block_parameters_opening, true);
|
params = parse_block_parameters(parser, false, &opening, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
accept(parser, YP_TOKEN_NEWLINE);
|
accept(parser, YP_TOKEN_NEWLINE);
|
||||||
expect(parser, YP_TOKEN_PARENTHESIS_RIGHT, "Expected ')' after left parenthesis.");
|
expect(parser, YP_TOKEN_PARENTHESIS_RIGHT, "Expected ')' after left parenthesis.");
|
||||||
yp_block_parameters_node_closing_set(params, &parser->previous);
|
|
||||||
|
|
||||||
|
yp_block_parameters_node_closing_set(params, &parser->previous);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case YP_CASE_PARAMETER: {
|
case YP_CASE_PARAMETER: {
|
||||||
@ -12458,16 +12461,20 @@ parse_expression_prefix(yp_parser_t *parser, yp_binding_power_t binding_power) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
yp_token_t opening;
|
||||||
yp_node_t *body = NULL;
|
yp_node_t *body = NULL;
|
||||||
parser->lambda_enclosure_nesting = previous_lambda_enclosure_nesting;
|
parser->lambda_enclosure_nesting = previous_lambda_enclosure_nesting;
|
||||||
|
|
||||||
if (accept(parser, YP_TOKEN_LAMBDA_BEGIN)) {
|
if (accept(parser, YP_TOKEN_LAMBDA_BEGIN)) {
|
||||||
|
opening = parser->previous;
|
||||||
|
|
||||||
if (!accept(parser, YP_TOKEN_BRACE_RIGHT)) {
|
if (!accept(parser, YP_TOKEN_BRACE_RIGHT)) {
|
||||||
body = (yp_node_t *) parse_statements(parser, YP_CONTEXT_LAMBDA_BRACES);
|
body = (yp_node_t *) parse_statements(parser, YP_CONTEXT_LAMBDA_BRACES);
|
||||||
expect(parser, YP_TOKEN_BRACE_RIGHT, "Expecting '}' to close lambda block.");
|
expect(parser, YP_TOKEN_BRACE_RIGHT, "Expecting '}' to close lambda block.");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
expect(parser, YP_TOKEN_KEYWORD_DO, "Expected a 'do' keyword or a '{' to open lambda block.");
|
expect(parser, YP_TOKEN_KEYWORD_DO, "Expected a 'do' keyword or a '{' to open lambda block.");
|
||||||
|
opening = parser->previous;
|
||||||
|
|
||||||
if (!match_any_type_p(parser, 3, YP_TOKEN_KEYWORD_END, YP_TOKEN_KEYWORD_RESCUE, YP_TOKEN_KEYWORD_ENSURE)) {
|
if (!match_any_type_p(parser, 3, YP_TOKEN_KEYWORD_END, YP_TOKEN_KEYWORD_RESCUE, YP_TOKEN_KEYWORD_ENSURE)) {
|
||||||
body = (yp_node_t *) parse_statements(parser, YP_CONTEXT_LAMBDA_DO_END);
|
body = (yp_node_t *) parse_statements(parser, YP_CONTEXT_LAMBDA_DO_END);
|
||||||
@ -12484,7 +12491,7 @@ parse_expression_prefix(yp_parser_t *parser, yp_binding_power_t binding_power) {
|
|||||||
yp_constant_id_list_t locals = parser->current_scope->locals;
|
yp_constant_id_list_t locals = parser->current_scope->locals;
|
||||||
yp_parser_scope_pop(parser);
|
yp_parser_scope_pop(parser);
|
||||||
yp_accepts_block_stack_pop(parser);
|
yp_accepts_block_stack_pop(parser);
|
||||||
return (yp_node_t *) yp_lambda_node_create(parser, &locals, &opening, params, body, &parser->previous);
|
return (yp_node_t *) yp_lambda_node_create(parser, &locals, &operator, &opening, &parser->previous, params, body);
|
||||||
}
|
}
|
||||||
case YP_TOKEN_UPLUS: {
|
case YP_TOKEN_UPLUS: {
|
||||||
parser_lex(parser);
|
parser_lex(parser);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user