From 1ad0d198760d0f3295da86f66d099f28c9b50df7 Mon Sep 17 00:00:00 2001 From: Benoit Daloze Date: Wed, 5 Jul 2023 21:59:28 +0200 Subject: [PATCH] [ruby/yarp] Parse individual snippets of test/fixtures/*.txt * To ensure the parser does not try to read bytes further than the end of each snippet. https://github.com/ruby/yarp/commit/1c4438bdde --- test/yarp/fixtures/constants.txt | 3 + test/yarp/fixtures/strings.txt | 2 +- test/yarp/parse_test.rb | 25 +- test/yarp/snapshots/constants.txt | 524 +++++++++++++++--------------- test/yarp/snapshots/strings.txt | 198 +++++------ 5 files changed, 386 insertions(+), 366 deletions(-) diff --git a/test/yarp/fixtures/constants.txt b/test/yarp/fixtures/constants.txt index 8c7c6d227b..d3e7140630 100644 --- a/test/yarp/fixtures/constants.txt +++ b/test/yarp/fixtures/constants.txt @@ -51,6 +51,8 @@ A::>> A::<< A::\ +# +C A::alias @@ -163,6 +165,7 @@ A::** A::~ A::_:: +C A::_.. diff --git a/test/yarp/fixtures/strings.txt b/test/yarp/fixtures/strings.txt index 9d6cc77fc7..947c535aed 100644 --- a/test/yarp/fixtures/strings.txt +++ b/test/yarp/fixtures/strings.txt @@ -37,7 +37,7 @@ %[foo[]] "foo" + - +# "bar" %q{abc} diff --git a/test/yarp/parse_test.rb b/test/yarp/parse_test.rb index 3e1c3cb8f0..91752cd483 100644 --- a/test/yarp/parse_test.rb +++ b/test/yarp/parse_test.rb @@ -45,11 +45,6 @@ class ParseTest < Test::Unit::TestCase end end - def test_parse_dollar0 - parsed_result = YARP.parse("$0", "-e") - assert_equal 2, parsed_result.value.location.length - end - def test_parse_takes_file_path filepath = "filepath.rb" parsed_result = YARP.parse("def foo; __FILE__; end", filepath) @@ -124,6 +119,26 @@ class ParseTest < Test::Unit::TestCase end end + Dir["*.txt", base: base].each do |relative| + # We test every snippet (separated by \n\n) in isolation + # to ensure the parser does not try to read bytes further than the end of each snippet + define_method "test_individual_snippets_#{relative}" do + filepath = File.join(base, relative) + + # First, read the source from the filepath. Use binmode to avoid converting CRLF on Windows, + # and explicitly set the external encoding to UTF-8 to override the binmode default. + file_contents = File.read(filepath, binmode: true, external_encoding: Encoding::UTF_8) + + file_contents.split(/(?<=\S)\n\n(?=\S)/).each do |snippet| + snippet = snippet.rstrip + result = YARP.parse(snippet, relative) + assert_empty result.errors + + assert_equal_nodes(result.value, YARP.load(snippet, YARP.dump(snippet, relative))) + end + end + end + private def ignore_warnings diff --git a/test/yarp/snapshots/constants.txt b/test/yarp/snapshots/constants.txt index 438f36599c..5469144be3 100644 --- a/test/yarp/snapshots/constants.txt +++ b/test/yarp/snapshots/constants.txt @@ -1,6 +1,6 @@ -ProgramNode(0...709)( +ProgramNode(0...715)( [], - StatementsNode(0...709)( + StatementsNode(0...715)( [ConstantPathNode(0...4)( ConstantReadNode(0...1)(), ConstantReadNode(3...4)(), @@ -235,14 +235,15 @@ ProgramNode(0...709)( 0, "<<" ), - CallNode(196...210)( - ConstantPathNode(196...203)( - ConstantReadNode(196...197)(), - ConstantReadNode(202...203)(), - (197...199) - ), - (203...205), - (205...210), + ConstantPathNode(196...204)( + ConstantReadNode(196...197)(), + ConstantReadNode(203...204)(), + (197...199) + ), + CallNode(206...214)( + ConstantReadNode(206...207)(), + (207...209), + (209...214), nil, nil, nil, @@ -250,10 +251,10 @@ ProgramNode(0...709)( 0, "alias" ), - CallNode(212...218)( - ConstantReadNode(212...213)(), - (213...215), - (215...218), + CallNode(216...222)( + ConstantReadNode(216...217)(), + (217...219), + (219...222), nil, nil, nil, @@ -261,10 +262,10 @@ ProgramNode(0...709)( 0, "and" ), - CallNode(220...228)( - ConstantReadNode(220...221)(), - (221...223), - (223...228), + CallNode(224...232)( + ConstantReadNode(224...225)(), + (225...227), + (227...232), nil, nil, nil, @@ -272,15 +273,15 @@ ProgramNode(0...709)( 0, "begin" ), - ConstantPathNode(230...238)( - ConstantReadNode(230...231)(), - ConstantReadNode(233...238)(), - (231...233) + ConstantPathNode(234...242)( + ConstantReadNode(234...235)(), + ConstantReadNode(237...242)(), + (235...237) ), - CallNode(240...248)( - ConstantReadNode(240...241)(), - (241...243), - (243...248), + CallNode(244...252)( + ConstantReadNode(244...245)(), + (245...247), + (247...252), nil, nil, nil, @@ -288,10 +289,10 @@ ProgramNode(0...709)( 0, "break" ), - CallNode(250...258)( - ConstantReadNode(250...251)(), - (251...253), - (253...258), + CallNode(254...262)( + ConstantReadNode(254...255)(), + (255...257), + (257...262), nil, nil, nil, @@ -299,10 +300,10 @@ ProgramNode(0...709)( 0, "class" ), - CallNode(260...266)( - ConstantReadNode(260...261)(), - (261...263), - (263...266), + CallNode(264...270)( + ConstantReadNode(264...265)(), + (265...267), + (267...270), nil, nil, nil, @@ -310,10 +311,10 @@ ProgramNode(0...709)( 0, "def" ), - CallNode(268...278)( - ConstantReadNode(268...269)(), - (269...271), - (271...278), + CallNode(272...282)( + ConstantReadNode(272...273)(), + (273...275), + (275...282), nil, nil, nil, @@ -321,10 +322,10 @@ ProgramNode(0...709)( 0, "defined" ), - CallNode(280...285)( - ConstantReadNode(280...281)(), - (281...283), - (283...285), + CallNode(284...289)( + ConstantReadNode(284...285)(), + (285...287), + (287...289), nil, nil, nil, @@ -332,10 +333,10 @@ ProgramNode(0...709)( 0, "do" ), - CallNode(287...294)( - ConstantReadNode(287...288)(), - (288...290), - (290...294), + CallNode(291...298)( + ConstantReadNode(291...292)(), + (292...294), + (294...298), nil, nil, nil, @@ -343,10 +344,10 @@ ProgramNode(0...709)( 0, "else" ), - CallNode(296...304)( - ConstantReadNode(296...297)(), - (297...299), - (299...304), + CallNode(300...308)( + ConstantReadNode(300...301)(), + (301...303), + (303...308), nil, nil, nil, @@ -354,10 +355,10 @@ ProgramNode(0...709)( 0, "elsif" ), - CallNode(306...312)( - ConstantReadNode(306...307)(), - (307...309), - (309...312), + CallNode(310...316)( + ConstantReadNode(310...311)(), + (311...313), + (313...316), nil, nil, nil, @@ -365,15 +366,15 @@ ProgramNode(0...709)( 0, "end" ), - ConstantPathNode(314...320)( - ConstantReadNode(314...315)(), - ConstantReadNode(317...320)(), - (315...317) + ConstantPathNode(318...324)( + ConstantReadNode(318...319)(), + ConstantReadNode(321...324)(), + (319...321) ), - CallNode(322...331)( - ConstantReadNode(322...323)(), - (323...325), - (325...331), + CallNode(326...335)( + ConstantReadNode(326...327)(), + (327...329), + (329...335), nil, nil, nil, @@ -381,10 +382,10 @@ ProgramNode(0...709)( 0, "ensure" ), - CallNode(333...341)( - ConstantReadNode(333...334)(), - (334...336), - (336...341), + CallNode(337...345)( + ConstantReadNode(337...338)(), + (338...340), + (340...345), nil, nil, nil, @@ -392,10 +393,10 @@ ProgramNode(0...709)( 0, "false" ), - CallNode(343...349)( - ConstantReadNode(343...344)(), - (344...346), - (346...349), + CallNode(347...353)( + ConstantReadNode(347...348)(), + (348...350), + (350...353), nil, nil, nil, @@ -403,10 +404,10 @@ ProgramNode(0...709)( 0, "for" ), - CallNode(351...356)( - ConstantReadNode(351...352)(), - (352...354), - (354...356), + CallNode(355...360)( + ConstantReadNode(355...356)(), + (356...358), + (358...360), nil, nil, nil, @@ -414,10 +415,10 @@ ProgramNode(0...709)( 0, "if" ), - CallNode(358...363)( - ConstantReadNode(358...359)(), - (359...361), - (361...363), + CallNode(362...367)( + ConstantReadNode(362...363)(), + (363...365), + (365...367), nil, nil, nil, @@ -425,10 +426,10 @@ ProgramNode(0...709)( 0, "in" ), - CallNode(365...372)( - ConstantReadNode(365...366)(), - (366...368), - (368...372), + CallNode(369...376)( + ConstantReadNode(369...370)(), + (370...372), + (372...376), nil, nil, nil, @@ -436,10 +437,10 @@ ProgramNode(0...709)( 0, "next" ), - CallNode(374...380)( - ConstantReadNode(374...375)(), - (375...377), - (377...380), + CallNode(378...384)( + ConstantReadNode(378...379)(), + (379...381), + (381...384), nil, nil, nil, @@ -447,10 +448,10 @@ ProgramNode(0...709)( 0, "nil" ), - CallNode(382...388)( - ConstantReadNode(382...383)(), - (383...385), - (385...388), + CallNode(386...392)( + ConstantReadNode(386...387)(), + (387...389), + (389...392), nil, nil, nil, @@ -458,10 +459,10 @@ ProgramNode(0...709)( 0, "not" ), - CallNode(390...395)( - ConstantReadNode(390...391)(), - (391...393), - (393...395), + CallNode(394...399)( + ConstantReadNode(394...395)(), + (395...397), + (397...399), nil, nil, nil, @@ -469,10 +470,10 @@ ProgramNode(0...709)( 0, "or" ), - CallNode(397...404)( - ConstantReadNode(397...398)(), - (398...400), - (400...404), + CallNode(401...408)( + ConstantReadNode(401...402)(), + (402...404), + (404...408), nil, nil, nil, @@ -480,10 +481,10 @@ ProgramNode(0...709)( 0, "redo" ), - CallNode(406...415)( - ConstantReadNode(406...407)(), - (407...409), - (409...415), + CallNode(410...419)( + ConstantReadNode(410...411)(), + (411...413), + (413...419), nil, nil, nil, @@ -491,10 +492,10 @@ ProgramNode(0...709)( 0, "rescue" ), - CallNode(417...425)( - ConstantReadNode(417...418)(), - (418...420), - (420...425), + CallNode(421...429)( + ConstantReadNode(421...422)(), + (422...424), + (424...429), nil, nil, nil, @@ -502,10 +503,10 @@ ProgramNode(0...709)( 0, "retry" ), - CallNode(427...436)( - ConstantReadNode(427...428)(), - (428...430), - (430...436), + CallNode(431...440)( + ConstantReadNode(431...432)(), + (432...434), + (434...440), nil, nil, nil, @@ -513,10 +514,10 @@ ProgramNode(0...709)( 0, "return" ), - CallNode(438...445)( - ConstantReadNode(438...439)(), - (439...441), - (441...445), + CallNode(442...449)( + ConstantReadNode(442...443)(), + (443...445), + (445...449), nil, nil, nil, @@ -524,10 +525,10 @@ ProgramNode(0...709)( 0, "self" ), - CallNode(447...455)( - ConstantReadNode(447...448)(), - (448...450), - (450...455), + CallNode(451...459)( + ConstantReadNode(451...452)(), + (452...454), + (454...459), nil, nil, nil, @@ -535,10 +536,10 @@ ProgramNode(0...709)( 0, "super" ), - CallNode(457...464)( - ConstantReadNode(457...458)(), - (458...460), - (460...464), + CallNode(461...468)( + ConstantReadNode(461...462)(), + (462...464), + (464...468), nil, nil, nil, @@ -546,10 +547,10 @@ ProgramNode(0...709)( 0, "then" ), - CallNode(466...473)( - ConstantReadNode(466...467)(), - (467...469), - (469...473), + CallNode(470...477)( + ConstantReadNode(470...471)(), + (471...473), + (473...477), nil, nil, nil, @@ -557,10 +558,10 @@ ProgramNode(0...709)( 0, "true" ), - CallNode(475...483)( - ConstantReadNode(475...476)(), - (476...478), - (478...483), + CallNode(479...487)( + ConstantReadNode(479...480)(), + (480...482), + (482...487), nil, nil, nil, @@ -568,10 +569,10 @@ ProgramNode(0...709)( 0, "undef" ), - CallNode(485...494)( - ConstantReadNode(485...486)(), - (486...488), - (488...494), + CallNode(489...498)( + ConstantReadNode(489...490)(), + (490...492), + (492...498), nil, nil, nil, @@ -579,10 +580,10 @@ ProgramNode(0...709)( 0, "unless" ), - CallNode(496...504)( - ConstantReadNode(496...497)(), - (497...499), - (499...504), + CallNode(500...508)( + ConstantReadNode(500...501)(), + (501...503), + (503...508), nil, nil, nil, @@ -590,10 +591,10 @@ ProgramNode(0...709)( 0, "until" ), - CallNode(506...513)( - ConstantReadNode(506...507)(), - (507...509), - (509...513), + CallNode(510...517)( + ConstantReadNode(510...511)(), + (511...513), + (513...517), nil, nil, nil, @@ -601,10 +602,10 @@ ProgramNode(0...709)( 0, "when" ), - CallNode(515...523)( - ConstantReadNode(515...516)(), - (516...518), - (518...523), + CallNode(519...527)( + ConstantReadNode(519...520)(), + (520...522), + (522...527), nil, nil, nil, @@ -612,10 +613,10 @@ ProgramNode(0...709)( 0, "while" ), - CallNode(525...533)( - ConstantReadNode(525...526)(), - (526...528), - (528...533), + CallNode(529...537)( + ConstantReadNode(529...530)(), + (530...532), + (532...537), nil, nil, nil, @@ -623,10 +624,10 @@ ProgramNode(0...709)( 0, "yield" ), - CallNode(535...550)( - ConstantReadNode(535...536)(), - (536...538), - (538...550), + CallNode(539...554)( + ConstantReadNode(539...540)(), + (540...542), + (542...554), nil, nil, nil, @@ -634,10 +635,10 @@ ProgramNode(0...709)( 0, "__ENCODING__" ), - CallNode(552...563)( - ConstantReadNode(552...553)(), - (553...555), - (555...563), + CallNode(556...567)( + ConstantReadNode(556...557)(), + (557...559), + (559...567), nil, nil, nil, @@ -645,10 +646,10 @@ ProgramNode(0...709)( 0, "__FILE__" ), - CallNode(565...576)( - ConstantReadNode(565...566)(), - (566...568), - (568...576), + CallNode(569...580)( + ConstantReadNode(569...570)(), + (570...572), + (572...580), nil, nil, nil, @@ -656,10 +657,10 @@ ProgramNode(0...709)( 0, "__LINE__" ), - CallNode(578...582)( - ConstantReadNode(578...579)(), - (579...581), - (581...582), + CallNode(582...586)( + ConstantReadNode(582...583)(), + (583...585), + (585...586), nil, nil, nil, @@ -667,10 +668,10 @@ ProgramNode(0...709)( 0, "<" ), - CallNode(584...590)( - ConstantReadNode(584...585)(), - (585...587), - (587...590), + CallNode(588...594)( + ConstantReadNode(588...589)(), + (589...591), + (591...594), nil, nil, nil, @@ -678,10 +679,10 @@ ProgramNode(0...709)( 0, "<=>" ), - CallNode(592...597)( - ConstantReadNode(592...593)(), - (593...595), - (595...597), + CallNode(596...601)( + ConstantReadNode(596...597)(), + (597...599), + (599...601), nil, nil, nil, @@ -689,10 +690,10 @@ ProgramNode(0...709)( 0, "<<" ), - CallNode(599...603)( - ConstantReadNode(599...600)(), - (600...602), - (602...603), + CallNode(603...607)( + ConstantReadNode(603...604)(), + (604...606), + (606...607), nil, nil, nil, @@ -700,10 +701,10 @@ ProgramNode(0...709)( 0, "-" ), - CallNode(605...609)( - ConstantReadNode(605...606)(), - (606...608), - (608...609), + CallNode(609...613)( + ConstantReadNode(609...610)(), + (610...612), + (612...613), nil, nil, nil, @@ -711,16 +712,16 @@ ProgramNode(0...709)( 0, "%" ), - CallNode(611...616)( - ConstantReadNode(611...612)(), - (612...614), - (615...616), + CallNode(615...620)( + ConstantReadNode(615...616)(), + (616...618), + (619...620), nil, - ArgumentsNode(615...616)( - [CallNode(615...616)( + ArgumentsNode(619...620)( + [CallNode(619...620)( nil, nil, - (615...616), + (619...620), nil, nil, nil, @@ -734,16 +735,16 @@ ProgramNode(0...709)( 0, "i" ), - CallNode(618...623)( - ConstantReadNode(618...619)(), - (619...621), - (622...623), + CallNode(622...627)( + ConstantReadNode(622...623)(), + (623...625), + (626...627), nil, - ArgumentsNode(622...623)( - [CallNode(622...623)( + ArgumentsNode(626...627)( + [CallNode(626...627)( nil, nil, - (622...623), + (626...627), nil, nil, nil, @@ -757,16 +758,16 @@ ProgramNode(0...709)( 0, "w" ), - CallNode(625...630)( - ConstantReadNode(625...626)(), - (626...628), - (629...630), + CallNode(629...634)( + ConstantReadNode(629...630)(), + (630...632), + (633...634), nil, - ArgumentsNode(629...630)( - [CallNode(629...630)( + ArgumentsNode(633...634)( + [CallNode(633...634)( nil, nil, - (629...630), + (633...634), nil, nil, nil, @@ -780,32 +781,32 @@ ProgramNode(0...709)( 0, "x" ), - CallNode(632...637)( - ConstantReadNode(632...633)(), - (633...635), - (636...637), + CallNode(636...641)( + ConstantReadNode(636...637)(), + (637...639), + (640...641), nil, - ArgumentsNode(636...637)([ConstantReadNode(636...637)()]), + ArgumentsNode(640...641)([ConstantReadNode(640...641)()]), nil, nil, 0, "I" ), - CallNode(639...644)( - ConstantReadNode(639...640)(), - (640...642), - (643...644), + CallNode(643...648)( + ConstantReadNode(643...644)(), + (644...646), + (647...648), nil, - ArgumentsNode(643...644)([ConstantReadNode(643...644)()]), + ArgumentsNode(647...648)([ConstantReadNode(647...648)()]), nil, nil, 0, "W" ), - CallNode(646...650)( - ConstantReadNode(646...647)(), - (647...649), - (649...650), + CallNode(650...654)( + ConstantReadNode(650...651)(), + (651...653), + (653...654), nil, nil, nil, @@ -813,10 +814,10 @@ ProgramNode(0...709)( 0, "|" ), - CallNode(652...656)( - ConstantReadNode(652...653)(), - (653...655), - (655...656), + CallNode(656...660)( + ConstantReadNode(656...657)(), + (657...659), + (659...660), nil, nil, nil, @@ -824,10 +825,10 @@ ProgramNode(0...709)( 0, "+" ), - CallNode(658...662)( - ConstantReadNode(658...659)(), - (659...661), - (661...662), + CallNode(662...666)( + ConstantReadNode(662...663)(), + (663...665), + (665...666), nil, nil, nil, @@ -835,10 +836,10 @@ ProgramNode(0...709)( 0, "/" ), - CallNode(664...668)( - ConstantReadNode(664...665)(), - (665...667), - (667...668), + CallNode(668...672)( + ConstantReadNode(668...669)(), + (669...671), + (671...672), nil, nil, nil, @@ -846,10 +847,10 @@ ProgramNode(0...709)( 0, "*" ), - CallNode(670...675)( - ConstantReadNode(670...671)(), - (671...673), - (673...675), + CallNode(674...679)( + ConstantReadNode(674...675)(), + (675...677), + (677...679), nil, nil, nil, @@ -857,10 +858,10 @@ ProgramNode(0...709)( 0, "**" ), - CallNode(677...681)( - ConstantReadNode(677...678)(), - (678...680), - (680...681), + CallNode(681...685)( + ConstantReadNode(681...682)(), + (682...684), + (684...685), nil, nil, nil, @@ -868,25 +869,11 @@ ProgramNode(0...709)( 0, "~" ), - RangeNode(683...709)( - CallNode(683...695)( - ConstantPathNode(683...692)( - CallNode(683...687)( - ConstantReadNode(683...684)(), - (684...686), - (686...687), - nil, - nil, - nil, - nil, - 0, - "_" - ), - ConstantReadNode(691...692)(), - (687...689) - ), - (692...694), - (694...695), + ConstantPathNode(687...695)( + CallNode(687...691)( + ConstantReadNode(687...688)(), + (688...690), + (690...691), nil, nil, nil, @@ -894,10 +881,25 @@ ProgramNode(0...709)( 0, "_" ), - CallNode(699...709)( - ConstantReadNode(699...700)(), - (700...702), - (702...709), + ConstantReadNode(694...695)(), + (691...693) + ), + RangeNode(697...715)( + CallNode(697...701)( + ConstantReadNode(697...698)(), + (698...700), + (700...701), + nil, + nil, + nil, + nil, + 0, + "_" + ), + CallNode(705...715)( + ConstantReadNode(705...706)(), + (706...708), + (708...715), nil, nil, nil, @@ -905,7 +907,7 @@ ProgramNode(0...709)( 0, "__END__" ), - (695...697), + (701...703), 0 )] ) diff --git a/test/yarp/snapshots/strings.txt b/test/yarp/snapshots/strings.txt index 9b2821a0fd..5f3e5d2933 100644 --- a/test/yarp/snapshots/strings.txt +++ b/test/yarp/snapshots/strings.txt @@ -1,6 +1,6 @@ -ProgramNode(0...497)( +ProgramNode(0...498)( [], - StatementsNode(0...497)( + StatementsNode(0...498)( [StringNode(0...6)((0...2), (2...5), (5...6), "abc"), StringNode(8...14)((8...10), (10...13), (13...14), "abc"), StringNode(16...22)((16...18), (18...21), (21...22), "abc"), @@ -49,35 +49,35 @@ ProgramNode(0...497)( (156...157) ), StringNode(159...167)((159...161), (161...166), (166...167), "foo[]"), - CallNode(169...183)( + CallNode(169...184)( StringNode(169...174)((169...170), (170...173), (173...174), "foo"), nil, (175...176), nil, - ArgumentsNode(178...183)( - [StringNode(178...183)((178...179), (179...182), (182...183), "bar")] + ArgumentsNode(179...184)( + [StringNode(179...184)((179...180), (180...183), (183...184), "bar")] ), nil, nil, 0, "+" ), - StringNode(185...192)((185...188), (188...191), (191...192), "abc"), - SymbolNode(194...201)((194...197), (197...200), (200...201), "abc"), - StringNode(203...209)((203...205), (205...208), (208...209), "abc"), - StringNode(211...213)((211...212), (212...212), (212...213), ""), - StringNode(215...220)((215...216), (216...219), (219...220), "abc"), - StringNode(222...229)((222...223), (223...228), (228...229), "\#@---"), - InterpolatedStringNode(231...247)( - (231...232), - [StringNode(232...236)(nil, (232...236), nil, "aaa "), - EmbeddedStatementsNode(236...242)( - (236...238), - StatementsNode(238...241)( - [CallNode(238...241)( + StringNode(186...193)((186...189), (189...192), (192...193), "abc"), + SymbolNode(195...202)((195...198), (198...201), (201...202), "abc"), + StringNode(204...210)((204...206), (206...209), (209...210), "abc"), + StringNode(212...214)((212...213), (213...213), (213...214), ""), + StringNode(216...221)((216...217), (217...220), (220...221), "abc"), + StringNode(223...230)((223...224), (224...229), (229...230), "\#@---"), + InterpolatedStringNode(232...248)( + (232...233), + [StringNode(233...237)(nil, (233...237), nil, "aaa "), + EmbeddedStatementsNode(237...243)( + (237...239), + StatementsNode(239...242)( + [CallNode(239...242)( nil, nil, - (238...241), + (239...242), nil, nil, nil, @@ -86,50 +86,50 @@ ProgramNode(0...497)( "bbb" )] ), - (241...242) + (242...243) ), - StringNode(242...246)(nil, (242...246), nil, " ccc")], - (246...247) + StringNode(243...247)(nil, (243...247), nil, " ccc")], + (247...248) ), - StringNode(249...254)((249...250), (250...253), (253...254), "abc"), - ArrayNode(256...265)( - [StringNode(259...260)(nil, (259...260), nil, "a"), - StringNode(261...262)(nil, (261...262), nil, "b"), - StringNode(263...264)(nil, (263...264), nil, "c")], - (256...259), - (264...265) + StringNode(250...255)((250...251), (251...254), (254...255), "abc"), + ArrayNode(257...266)( + [StringNode(260...261)(nil, (260...261), nil, "a"), + StringNode(262...263)(nil, (262...263), nil, "b"), + StringNode(264...265)(nil, (264...265), nil, "c")], + (257...260), + (265...266) ), - ArrayNode(267...284)( - [StringNode(270...273)(nil, (270...273), nil, "a[]"), - StringNode(274...279)(nil, (274...279), nil, "b[[]]"), - StringNode(280...283)(nil, (280...283), nil, "c[]")], - (267...270), - (283...284) + ArrayNode(268...285)( + [StringNode(271...274)(nil, (271...274), nil, "a[]"), + StringNode(275...280)(nil, (275...280), nil, "b[[]]"), + StringNode(281...284)(nil, (281...284), nil, "c[]")], + (268...271), + (284...285) ), - ArrayNode(286...304)( - [StringNode(289...297)(nil, (289...297), nil, "foo\\ bar"), - StringNode(298...303)(nil, (298...303), nil, "\\\#{1}")], - (286...289), - (303...304) + ArrayNode(287...305)( + [StringNode(290...298)(nil, (290...298), nil, "foo\\ bar"), + StringNode(299...304)(nil, (299...304), nil, "\\\#{1}")], + (287...290), + (304...305) ), - ArrayNode(306...322)( - [StringNode(309...317)(nil, (309...317), nil, "foo\\ bar"), - StringNode(318...321)(nil, (318...321), nil, "baz")], - (306...309), - (321...322) + ArrayNode(307...323)( + [StringNode(310...318)(nil, (310...318), nil, "foo\\ bar"), + StringNode(319...322)(nil, (319...322), nil, "baz")], + (307...310), + (322...323) ), - ArrayNode(324...338)( - [StringNode(327...328)(nil, (327...328), nil, "a"), - InterpolatedStringNode(0...335)( + ArrayNode(325...339)( + [StringNode(328...329)(nil, (328...329), nil, "a"), + InterpolatedStringNode(0...336)( nil, - [StringNode(329...330)(nil, (329...330), nil, "b"), - EmbeddedStatementsNode(330...334)( - (330...332), - StatementsNode(332...333)( - [CallNode(332...333)( + [StringNode(330...331)(nil, (330...331), nil, "b"), + EmbeddedStatementsNode(331...335)( + (331...333), + StatementsNode(333...334)( + [CallNode(333...334)( nil, nil, - (332...333), + (333...334), nil, nil, nil, @@ -138,64 +138,64 @@ ProgramNode(0...497)( "c" )] ), - (333...334) + (334...335) ), - StringNode(334...335)(nil, (334...335), nil, "d")], + StringNode(335...336)(nil, (335...336), nil, "d")], nil ), - StringNode(336...337)(nil, (336...337), nil, "e")], - (324...327), - (337...338) + StringNode(337...338)(nil, (337...338), nil, "e")], + (325...328), + (338...339) ), - ArrayNode(340...349)( - [StringNode(343...344)(nil, (343...344), nil, "a"), - StringNode(345...346)(nil, (345...346), nil, "b"), - StringNode(347...348)(nil, (347...348), nil, "c")], - (340...343), - (348...349) + ArrayNode(341...350)( + [StringNode(344...345)(nil, (344...345), nil, "a"), + StringNode(346...347)(nil, (346...347), nil, "b"), + StringNode(348...349)(nil, (348...349), nil, "c")], + (341...344), + (349...350) ), - ArrayNode(351...368)( - [StringNode(357...358)(nil, (357...358), nil, "a"), - StringNode(361...362)(nil, (361...362), nil, "b"), - StringNode(365...366)(nil, (365...366), nil, "c")], - (351...354), - (367...368) + ArrayNode(352...369)( + [StringNode(358...359)(nil, (358...359), nil, "a"), + StringNode(362...363)(nil, (362...363), nil, "b"), + StringNode(366...367)(nil, (366...367), nil, "c")], + (352...355), + (368...369) ), - StringNode(370...385)( - (370...371), - (371...384), - (384...385), + StringNode(371...386)( + (371...372), + (372...385), + (385...386), "' foo ' bar" ), - StringNode(387...402)( - (387...388), - (388...401), - (401...402), + StringNode(388...403)( + (388...389), + (389...402), + (402...403), "\\ foo \\ bar" ), - InterpolatedStringNode(404...411)( - (404...405), - [EmbeddedVariableNode(405...410)( - (405...406), - GlobalVariableReadNode(406...410)() + InterpolatedStringNode(405...412)( + (405...406), + [EmbeddedVariableNode(406...411)( + (406...407), + GlobalVariableReadNode(407...411)() )], - (410...411) + (411...412) ), - InterpolatedStringNode(413...420)( - (413...414), - [EmbeddedVariableNode(414...419)( - (414...415), - InstanceVariableReadNode(415...419)() + InterpolatedStringNode(414...421)( + (414...415), + [EmbeddedVariableNode(415...420)( + (415...416), + InstanceVariableReadNode(416...420)() )], - (419...420) + (420...421) ), - StringNode(422...437)((422...423), (423...436), (436...437), "\a # a"), - StringNode(439...452)((439...440), (440...451), (451...452), "\a # a"), - StringNode(454...460)((454...456), (456...459), (459...460), "abc"), - StringNode(462...468)((462...464), (464...467), (467...468), "abc"), - StringNode(470...476)((470...472), (472...475), (475...476), "abc"), - StringNode(478...484)((478...480), (480...483), (483...484), "abc"), - StringNode(486...488)((486...487), (487...488), nil, "a"), - StringNode(490...497)((490...493), (493...496), (496...497), "abc")] + StringNode(423...438)((423...424), (424...437), (437...438), "\a # a"), + StringNode(440...453)((440...441), (441...452), (452...453), "\a # a"), + StringNode(455...461)((455...457), (457...460), (460...461), "abc"), + StringNode(463...469)((463...465), (465...468), (468...469), "abc"), + StringNode(471...477)((471...473), (473...476), (476...477), "abc"), + StringNode(479...485)((479...481), (481...484), (484...485), "abc"), + StringNode(487...489)((487...488), (488...489), nil, "a"), + StringNode(491...498)((491...494), (494...497), (497...498), "abc")] ) )