diff --git a/config.yml b/config.yml index 354c90abcdf..164e96101f5 100644 --- a/config.yml +++ b/config.yml @@ -779,7 +779,7 @@ nodes: - name: end_keyword_loc type: location - name: name - type: string + type: constant - name: name_constant type: constant comment: | @@ -1739,7 +1739,7 @@ nodes: - name: end_keyword_loc type: location - name: name - type: string + type: constant - name: name_constant type: constant comment: | diff --git a/src/yarp.c b/src/yarp.c index 78b3907308e..4e291637f1c 100644 --- a/src/yarp.c +++ b/src/yarp.c @@ -1647,6 +1647,7 @@ yp_case_node_end_keyword_loc_set(yp_case_node_t *node, const yp_token_t *end_key static yp_class_node_t * yp_class_node_create(yp_parser_t *parser, yp_constant_id_list_t *locals, const yp_token_t *class_keyword, yp_node_t *constant_path, const yp_token_t *name, const yp_token_t *inheritance_operator, yp_node_t *superclass, yp_node_t *body, const yp_token_t *end_keyword) { yp_class_node_t *node = YP_ALLOC_NODE(parser, yp_class_node_t); + yp_constant_id_t name_constant = yp_parser_constant_id_token(parser, name); *node = (yp_class_node_t) { { @@ -1660,11 +1661,10 @@ yp_class_node_create(yp_parser_t *parser, yp_constant_id_list_t *locals, const y .superclass = superclass, .body = body, .end_keyword_loc = YP_LOCATION_TOKEN_VALUE(end_keyword), - .name = YP_EMPTY_STRING, - .name_constant = yp_parser_constant_id_token(parser, name) + .name = name_constant, + .name_constant = name_constant }; - yp_string_shared_init(&node->name, name->start, name->end); return node; } @@ -3297,6 +3297,7 @@ yp_match_required_node_create(yp_parser_t *parser, yp_node_t *value, yp_node_t * static yp_module_node_t * yp_module_node_create(yp_parser_t *parser, yp_constant_id_list_t *locals, const yp_token_t *module_keyword, yp_node_t *constant_path, const yp_token_t *name, yp_node_t *body, const yp_token_t *end_keyword) { yp_module_node_t *node = YP_ALLOC_NODE(parser, yp_module_node_t); + yp_constant_id_t name_constant = yp_parser_constant_id_token(parser, name); *node = (yp_module_node_t) { { @@ -3311,11 +3312,10 @@ yp_module_node_create(yp_parser_t *parser, yp_constant_id_list_t *locals, const .constant_path = constant_path, .body = body, .end_keyword_loc = YP_LOCATION_TOKEN_VALUE(end_keyword), - .name = YP_EMPTY_STRING, - .name_constant = yp_parser_constant_id_token(parser, name) + .name = name_constant, + .name_constant = name_constant }; - yp_string_shared_init(&node->name, name->start, name->end); return node; } diff --git a/test/yarp/errors_test.rb b/test/yarp/errors_test.rb index f5064ba70f2..aa39982d221 100644 --- a/test/yarp/errors_test.rb +++ b/test/yarp/errors_test.rb @@ -19,10 +19,10 @@ def test_module_name_recoverable Location(), ConstantReadNode(:Parent), StatementsNode( - [ModuleNode([], Location(), MissingNode(), nil, Location(), "", :"")] + [ModuleNode([], Location(), MissingNode(), nil, Location(), :"", :"")] ), Location(), - "Parent", + :Parent, :Parent ) @@ -394,7 +394,7 @@ def test_module_definition_in_method_body Location(), nil, nil, - StatementsNode([ModuleNode([], Location(), ConstantReadNode(:A), nil, Location(), "A", :A)]), + StatementsNode([ModuleNode([], Location(), ConstantReadNode(:A), nil, Location(), :A, :A)]), [], Location(), nil, @@ -425,7 +425,7 @@ def test_module_definition_in_method_body_within_block BlockNode( [], nil, - StatementsNode([ModuleNode([], Location(), ConstantReadNode(:Foo), nil, Location(), "Foo", :Foo)]), + StatementsNode([ModuleNode([], Location(), ConstantReadNode(:Foo), nil, Location(), :Foo, :Foo)]), Location(), Location() ), @@ -465,7 +465,7 @@ def test_class_definition_in_method_body nil, nil, Location(), - "A", + :A, :A )] ), @@ -981,7 +981,7 @@ def test_dont_allow_return_inside_class_body nil, StatementsNode([ReturnNode(Location(), nil)]), Location(), - "A", + :A, :A ) @@ -997,7 +997,7 @@ def test_dont_allow_return_inside_module_body ConstantReadNode(:A), StatementsNode([ReturnNode(Location(), nil)]), Location(), - "A", + :A, :A ) diff --git a/test/yarp/snapshots/classes.txt b/test/yarp/snapshots/classes.txt index 9a5fd84ad21..43c0d24ab98 100644 --- a/test/yarp/snapshots/classes.txt +++ b/test/yarp/snapshots/classes.txt @@ -17,7 +17,7 @@ ProgramNode(0...370)( )] ), (14...17), - "A", + :A, :A ), ClassNode(19...39)( @@ -35,7 +35,7 @@ ProgramNode(0...370)( (36...39) ), (36...39), - "A", + :A, :A ), ClassNode(41...75)( @@ -53,7 +53,7 @@ ProgramNode(0...370)( (72...75) ), (72...75), - "A", + :A, :A ), ClassNode(77...98)( @@ -72,7 +72,7 @@ ProgramNode(0...370)( )] ), (95...98), - "A", + :A, :A ), SingletonClassNode(100...120)( @@ -127,7 +127,7 @@ ProgramNode(0...370)( )] ), (159...162), - "A", + :A, :A ), ClassNode(164...218)( @@ -154,7 +154,7 @@ ProgramNode(0...370)( )] ), (215...218), - "A", + :A, :A ), SingletonClassNode(220...240)( @@ -287,7 +287,7 @@ ProgramNode(0...370)( ), nil, (367...370), - "A", + :A, :A )] ) diff --git a/test/yarp/snapshots/method_calls.txt b/test/yarp/snapshots/method_calls.txt index a479948ce18..f320ab86fee 100644 --- a/test/yarp/snapshots/method_calls.txt +++ b/test/yarp/snapshots/method_calls.txt @@ -1192,7 +1192,7 @@ ProgramNode(0...1237)( )] ), (926...929), - "Bar", + :Bar, :Bar )] ), @@ -1225,7 +1225,7 @@ ProgramNode(0...1237)( )] ), (957...960), - "Bar", + :Bar, :Bar )] ), diff --git a/test/yarp/snapshots/modules.txt b/test/yarp/snapshots/modules.txt index 4b00c1ebafc..306e7db3e34 100644 --- a/test/yarp/snapshots/modules.txt +++ b/test/yarp/snapshots/modules.txt @@ -15,7 +15,7 @@ ProgramNode(0...140)( )] ), (15...18), - "A", + :A, :A ), InterpolatedStringNode(20...38)( @@ -51,7 +51,7 @@ ProgramNode(0...140)( ), nil, (52...55), - "M", + :M, :M ), ModuleNode(57...85)( @@ -75,7 +75,7 @@ ProgramNode(0...140)( (82...85) ), (82...85), - "A", + :A, :A ), ModuleNode(87...101)( @@ -88,7 +88,7 @@ ProgramNode(0...140)( ), nil, (98...101), - "A", + :A, :A ), ModuleNode(103...120)( @@ -111,7 +111,7 @@ ProgramNode(0...140)( ), nil, (117...120), - "B", + :B, :B ), ModuleNode(122...140)( @@ -134,7 +134,7 @@ ProgramNode(0...140)( ), nil, (137...140), - "B", + :B, :B )] ) diff --git a/test/yarp/snapshots/seattlerb/TestRubyParserShared.txt b/test/yarp/snapshots/seattlerb/TestRubyParserShared.txt index 27e8a6b753b..6ae8ed6d031 100644 --- a/test/yarp/snapshots/seattlerb/TestRubyParserShared.txt +++ b/test/yarp/snapshots/seattlerb/TestRubyParserShared.txt @@ -87,7 +87,7 @@ ProgramNode(0...689)( )] ), (266...269), - "X", + :X, :X ), ClassNode(293...376)( @@ -112,12 +112,12 @@ ProgramNode(0...689)( )] ), (355...358), - "Y", + :Y, :Y )] ), (373...376), - "X", + :X, :X ), ClassNode(395...498)( @@ -165,7 +165,7 @@ ProgramNode(0...689)( )] ), (495...498), - "X", + :X, :X ), ModuleNode(517...565)( @@ -186,7 +186,7 @@ ProgramNode(0...689)( )] ), (562...565), - "X", + :X, :X ), ModuleNode(568...651)( @@ -207,12 +207,12 @@ ProgramNode(0...689)( )] ), (630...633), - "Y", + :Y, :Y )] ), (648...651), - "X", + :X, :X ), CallNode(670...689)( diff --git a/test/yarp/snapshots/seattlerb/class_comments.txt b/test/yarp/snapshots/seattlerb/class_comments.txt index 1751e299291..905c5914a2f 100644 --- a/test/yarp/snapshots/seattlerb/class_comments.txt +++ b/test/yarp/snapshots/seattlerb/class_comments.txt @@ -23,7 +23,7 @@ ProgramNode(19...71)( )] ), (68...71), - "X", + :X, :X )] ) diff --git a/test/yarp/snapshots/seattlerb/defn_oneliner_eq2.txt b/test/yarp/snapshots/seattlerb/defn_oneliner_eq2.txt index 43d13f27cb4..bbbdc17368d 100644 --- a/test/yarp/snapshots/seattlerb/defn_oneliner_eq2.txt +++ b/test/yarp/snapshots/seattlerb/defn_oneliner_eq2.txt @@ -31,7 +31,7 @@ ProgramNode(0...28)( )] ), (25...28), - "X", + :X, :X )] ) diff --git a/test/yarp/snapshots/seattlerb/defs_oneliner_eq2.txt b/test/yarp/snapshots/seattlerb/defs_oneliner_eq2.txt index 636a1fd66ca..1a88fffa507 100644 --- a/test/yarp/snapshots/seattlerb/defs_oneliner_eq2.txt +++ b/test/yarp/snapshots/seattlerb/defs_oneliner_eq2.txt @@ -31,7 +31,7 @@ ProgramNode(0...33)( )] ), (30...33), - "X", + :X, :X )] ) diff --git a/test/yarp/snapshots/seattlerb/magic_encoding_comment.txt b/test/yarp/snapshots/seattlerb/magic_encoding_comment.txt index c231c841242..77efd6f4160 100644 --- a/test/yarp/snapshots/seattlerb/magic_encoding_comment.txt +++ b/test/yarp/snapshots/seattlerb/magic_encoding_comment.txt @@ -31,7 +31,7 @@ ProgramNode(18...90)( )] ), (87...90), - "ExampleUTF8ClassNameVarietà", + :ExampleUTF8ClassNameVarietà, :ExampleUTF8ClassNameVarietà )] ) diff --git a/test/yarp/snapshots/seattlerb/module_comments.txt b/test/yarp/snapshots/seattlerb/module_comments.txt index 63019796ccd..152697f4022 100644 --- a/test/yarp/snapshots/seattlerb/module_comments.txt +++ b/test/yarp/snapshots/seattlerb/module_comments.txt @@ -21,7 +21,7 @@ ProgramNode(24...77)( )] ), (74...77), - "X", + :X, :X )] ) diff --git a/test/yarp/snapshots/seattlerb/parse_line_heredoc_hardnewline.txt b/test/yarp/snapshots/seattlerb/parse_line_heredoc_hardnewline.txt index c29b09012ed..623eb3aabf8 100644 --- a/test/yarp/snapshots/seattlerb/parse_line_heredoc_hardnewline.txt +++ b/test/yarp/snapshots/seattlerb/parse_line_heredoc_hardnewline.txt @@ -19,7 +19,7 @@ ProgramNode(0...48)( nil, nil, (45...48), - "Foo", + :Foo, :Foo )] ) diff --git a/test/yarp/snapshots/unparser/corpus/literal/class.txt b/test/yarp/snapshots/unparser/corpus/literal/class.txt index 60de85cb90e..cb49848ae35 100644 --- a/test/yarp/snapshots/unparser/corpus/literal/class.txt +++ b/test/yarp/snapshots/unparser/corpus/literal/class.txt @@ -9,7 +9,7 @@ ProgramNode(0...213)( nil, nil, (8...11), - "A", + :A, :A ), SingletonClassNode(13...27)( @@ -42,7 +42,7 @@ ProgramNode(0...213)( nil, nil, (60...63), - "B", + :B, :B ), ClassNode(65...82)( @@ -61,7 +61,7 @@ ProgramNode(0...213)( nil, nil, (79...82), - "C", + :C, :C ), ClassNode(84...99)( @@ -72,7 +72,7 @@ ProgramNode(0...213)( ConstantReadNode(94...95)(:B), nil, (96...99), - "A", + :A, :A ), ClassNode(101...119)( @@ -87,7 +87,7 @@ ProgramNode(0...213)( ), nil, (116...119), - "A", + :A, :A ), ClassNode(121...142)( @@ -106,7 +106,7 @@ ProgramNode(0...213)( ), nil, (139...142), - "B", + :B, :B ), ClassNode(144...198)( @@ -156,7 +156,7 @@ ProgramNode(0...213)( )] ), (195...198), - "A", + :A, :A ), ClassNode(200...213)( @@ -171,7 +171,7 @@ ProgramNode(0...213)( nil, nil, (210...213), - "A", + :A, :A )] ) diff --git a/test/yarp/snapshots/unparser/corpus/literal/if.txt b/test/yarp/snapshots/unparser/corpus/literal/if.txt index 0ab7b311635..455db66af84 100644 --- a/test/yarp/snapshots/unparser/corpus/literal/if.txt +++ b/test/yarp/snapshots/unparser/corpus/literal/if.txt @@ -81,7 +81,7 @@ ProgramNode(0...246)( )] ), (130...133), - "A", + :A, :A ), ModuleNode(135...170)( @@ -116,7 +116,7 @@ ProgramNode(0...246)( )] ), (167...170), - "B", + :B, :B ), UnlessNode(171...197)( diff --git a/test/yarp/snapshots/unparser/corpus/literal/module.txt b/test/yarp/snapshots/unparser/corpus/literal/module.txt index d2dd0fa351b..28de3bfa3bc 100644 --- a/test/yarp/snapshots/unparser/corpus/literal/module.txt +++ b/test/yarp/snapshots/unparser/corpus/literal/module.txt @@ -7,7 +7,7 @@ ProgramNode(0...106)( ConstantReadNode(7...8)(:A), nil, (9...12), - "A", + :A, :A ), ModuleNode(14...29)( @@ -20,7 +20,7 @@ ProgramNode(0...106)( ), nil, (26...29), - "B", + :B, :B ), ModuleNode(31...49)( @@ -37,7 +37,7 @@ ProgramNode(0...106)( ), nil, (46...49), - "C", + :C, :C ), ModuleNode(51...106)( @@ -85,7 +85,7 @@ ProgramNode(0...106)( )] ), (103...106), - "A", + :A, :A )] ) diff --git a/test/yarp/snapshots/unparser/corpus/literal/send.txt b/test/yarp/snapshots/unparser/corpus/literal/send.txt index ff90dc52cde..fccb137c093 100644 --- a/test/yarp/snapshots/unparser/corpus/literal/send.txt +++ b/test/yarp/snapshots/unparser/corpus/literal/send.txt @@ -38,7 +38,7 @@ ProgramNode(0...999)( )] ), (32...35), - "A", + :A, :A ), ModuleNode(37...73)( @@ -66,7 +66,7 @@ ProgramNode(0...999)( )] ), (70...73), - "A", + :A, :A ), CallNode(74...89)( @@ -78,7 +78,7 @@ ProgramNode(0...999)( nil, nil, (82...85), - "A", + :A, :A ), (85...86), @@ -97,7 +97,7 @@ ProgramNode(0...999)( ConstantReadNode(97...98)(:A), nil, (99...102), - "A", + :A, :A ), (102...103), diff --git a/test/yarp/snapshots/unparser/corpus/literal/while.txt b/test/yarp/snapshots/unparser/corpus/literal/while.txt index aed21abefc2..4d924f0d3df 100644 --- a/test/yarp/snapshots/unparser/corpus/literal/while.txt +++ b/test/yarp/snapshots/unparser/corpus/literal/while.txt @@ -64,7 +64,7 @@ ProgramNode(0...620)( )] ), (65...68), - "A", + :A, :A ), DefNode(70...110)( @@ -160,7 +160,7 @@ ProgramNode(0...620)( )] ), (143...146), - "A", + :A, :A ), ModuleNode(148...182)( @@ -195,7 +195,7 @@ ProgramNode(0...620)( )] ), (179...182), - "A", + :A, :A ), ModuleNode(184...228)( @@ -240,7 +240,7 @@ ProgramNode(0...620)( )] ), (225...228), - "A", + :A, :A ), ModuleNode(230...299)( @@ -316,7 +316,7 @@ ProgramNode(0...620)( )] ), (296...299), - "A", + :A, :A ), ModuleNode(301...370)( @@ -382,7 +382,7 @@ ProgramNode(0...620)( )] ), (367...370), - "A", + :A, :A ), LocalVariableWriteNode(371...402)( diff --git a/test/yarp/snapshots/unparser/corpus/semantic/while.txt b/test/yarp/snapshots/unparser/corpus/semantic/while.txt index 7426fac71d3..3e6ef668a1c 100644 --- a/test/yarp/snapshots/unparser/corpus/semantic/while.txt +++ b/test/yarp/snapshots/unparser/corpus/semantic/while.txt @@ -186,7 +186,7 @@ ProgramNode(0...188)( )] ), (185...188), - "A", + :A, :A )] ) diff --git a/test/yarp/snapshots/while.txt b/test/yarp/snapshots/while.txt index c04963bf9b6..843db1e147f 100644 --- a/test/yarp/snapshots/while.txt +++ b/test/yarp/snapshots/while.txt @@ -139,7 +139,7 @@ ProgramNode(0...314)( )] ), (195...198), - "Foo", + :Foo, :Foo ), StatementsNode(200...205)([BreakNode(200...205)(nil, (200...205))]), diff --git a/test/yarp/snapshots/whitequark/class.txt b/test/yarp/snapshots/whitequark/class.txt index ad181664b58..84ab3a72ef0 100644 --- a/test/yarp/snapshots/whitequark/class.txt +++ b/test/yarp/snapshots/whitequark/class.txt @@ -9,7 +9,7 @@ ProgramNode(0...29)( nil, nil, (10...13), - "Foo", + :Foo, :Foo ), ClassNode(15...29)( @@ -20,7 +20,7 @@ ProgramNode(0...29)( nil, nil, (26...29), - "Foo", + :Foo, :Foo )] ) diff --git a/test/yarp/snapshots/whitequark/class_definition_in_while_cond.txt b/test/yarp/snapshots/whitequark/class_definition_in_while_cond.txt index 292b0b79880..cec17515f12 100644 --- a/test/yarp/snapshots/whitequark/class_definition_in_while_cond.txt +++ b/test/yarp/snapshots/whitequark/class_definition_in_while_cond.txt @@ -88,7 +88,7 @@ ProgramNode(0...197)( )] ), (136...139), - "Foo", + :Foo, :Foo ), StatementsNode(141...146)([BreakNode(141...146)(nil, (141...146))]), @@ -117,7 +117,7 @@ ProgramNode(0...197)( )] ), (182...185), - "Foo", + :Foo, :Foo ), StatementsNode(187...192)([BreakNode(187...192)(nil, (187...192))]), diff --git a/test/yarp/snapshots/whitequark/class_super.txt b/test/yarp/snapshots/whitequark/class_super.txt index 6ebbb1364c1..ec400beb09d 100644 --- a/test/yarp/snapshots/whitequark/class_super.txt +++ b/test/yarp/snapshots/whitequark/class_super.txt @@ -9,7 +9,7 @@ ProgramNode(0...20)( ConstantReadNode(12...15)(:Bar), nil, (17...20), - "Foo", + :Foo, :Foo )] ) diff --git a/test/yarp/snapshots/whitequark/class_super_label.txt b/test/yarp/snapshots/whitequark/class_super_label.txt index a53dac8f2c3..8ebba419a27 100644 --- a/test/yarp/snapshots/whitequark/class_super_label.txt +++ b/test/yarp/snapshots/whitequark/class_super_label.txt @@ -21,7 +21,7 @@ ProgramNode(0...20)( ), nil, (17...20), - "Foo", + :Foo, :Foo )] ) diff --git a/test/yarp/snapshots/whitequark/cpath.txt b/test/yarp/snapshots/whitequark/cpath.txt index 3df789b5caa..b557da7e7fc 100644 --- a/test/yarp/snapshots/whitequark/cpath.txt +++ b/test/yarp/snapshots/whitequark/cpath.txt @@ -7,7 +7,7 @@ ProgramNode(0...39)( ConstantPathNode(7...12)(nil, ConstantReadNode(9...12)(:Foo), (7...9)), nil, (14...17), - "Foo", + :Foo, :Foo ), ModuleNode(19...39)( @@ -20,7 +20,7 @@ ProgramNode(0...39)( ), nil, (36...39), - "Foo", + :Foo, :Foo )] ) diff --git a/test/yarp/snapshots/whitequark/if_while_after_class__since_32.txt b/test/yarp/snapshots/whitequark/if_while_after_class__since_32.txt index a088237a852..c18c1b4e9a4 100644 --- a/test/yarp/snapshots/whitequark/if_while_after_class__since_32.txt +++ b/test/yarp/snapshots/whitequark/if_while_after_class__since_32.txt @@ -19,7 +19,7 @@ ProgramNode(0...178)( nil, nil, (35...38), - "Kernel", + :Kernel, :Kernel ), ClassNode(40...87)( @@ -45,7 +45,7 @@ ProgramNode(0...178)( nil, nil, (84...87), - "Kernel", + :Kernel, :Kernel ), ModuleNode(89...128)( @@ -64,7 +64,7 @@ ProgramNode(0...178)( ), nil, (125...128), - "Kernel", + :Kernel, :Kernel ), ModuleNode(130...178)( @@ -90,7 +90,7 @@ ProgramNode(0...178)( ), nil, (175...178), - "Kernel", + :Kernel, :Kernel )] ) diff --git a/test/yarp/snapshots/whitequark/module.txt b/test/yarp/snapshots/whitequark/module.txt index 9d3a1148f37..7880ab9980a 100644 --- a/test/yarp/snapshots/whitequark/module.txt +++ b/test/yarp/snapshots/whitequark/module.txt @@ -7,7 +7,7 @@ ProgramNode(0...15)( ConstantReadNode(7...10)(:Foo), nil, (12...15), - "Foo", + :Foo, :Foo )] ) diff --git a/test/yarp/snapshots/whitequark/numparam_outside_block.txt b/test/yarp/snapshots/whitequark/numparam_outside_block.txt index 9ef6b0cfbbe..61d138fa6d5 100644 --- a/test/yarp/snapshots/whitequark/numparam_outside_block.txt +++ b/test/yarp/snapshots/whitequark/numparam_outside_block.txt @@ -22,7 +22,7 @@ ProgramNode(0...83)( [CallNode(36...38)(nil, nil, (36...38), nil, nil, nil, nil, 2, "_1")] ), (40...43), - "A", + :A, :A ), DefNode(45...64)( @@ -48,7 +48,7 @@ ProgramNode(0...83)( [CallNode(76...78)(nil, nil, (76...78), nil, nil, nil, nil, 2, "_1")] ), (80...83), - "A", + :A, :A )] ) diff --git a/test/yarp/snapshots/whitequark/parser_bug_490.txt b/test/yarp/snapshots/whitequark/parser_bug_490.txt index 680b5fe146d..b3b5b04a4a4 100644 --- a/test/yarp/snapshots/whitequark/parser_bug_490.txt +++ b/test/yarp/snapshots/whitequark/parser_bug_490.txt @@ -49,7 +49,7 @@ ProgramNode(0...132)( nil, nil, (72...75), - "C", + :C, :C )] ), @@ -81,7 +81,7 @@ ProgramNode(0...132)( ConstantReadNode(116...117)(:M), nil, (119...122), - "M", + :M, :M )] ), diff --git a/test/yarp/snapshots/whitequark/parser_bug_518.txt b/test/yarp/snapshots/whitequark/parser_bug_518.txt index 0f92f9e95bd..fc53bcb5274 100644 --- a/test/yarp/snapshots/whitequark/parser_bug_518.txt +++ b/test/yarp/snapshots/whitequark/parser_bug_518.txt @@ -9,7 +9,7 @@ ProgramNode(0...15)( ConstantReadNode(10...11)(:B), nil, (12...15), - "A", + :A, :A )] )