@@ -1439,7 +1439,7 @@ Parser<ManagedTokenSource>::parse_macro_rules_def (AST::AttrVec outer_attrs)
1439
1439
{
1440
1440
return nullptr;
1441
1441
}
1442
- Identifier rule_name = ident_tok->get_str () ;
1442
+ Identifier rule_name{ ident_tok} ;
1443
1443
1444
1444
// DEBUG
1445
1445
rust_debug ("in macro rules def, about to parse parens.");
@@ -1596,7 +1596,7 @@ Parser<ManagedTokenSource>::parse_decl_macro_def (AST::Visibility vis,
1596
1596
{
1597
1597
return nullptr;
1598
1598
}
1599
- Identifier rule_name = ident_tok->get_str () ;
1599
+ Identifier rule_name{ ident_tok} ;
1600
1600
1601
1601
t = lexer.peek_token ();
1602
1602
if (t->get_id () == LEFT_PAREN)
@@ -2160,12 +2160,12 @@ Parser<ManagedTokenSource>::parse_macro_match_fragment ()
2160
2160
Location fragment_locus = lexer.peek_token ()->get_locus ();
2161
2161
skip_token (DOLLAR_SIGN);
2162
2162
2163
- Identifier ident{""} ;
2163
+ Identifier ident;
2164
2164
auto identifier = lexer.peek_token ();
2165
2165
if (identifier->get_id () == UNDERSCORE)
2166
- ident = {"_"};
2166
+ ident = {"_", identifier->get_locus () };
2167
2167
else
2168
- ident = identifier->get_str () ;
2168
+ ident = { identifier} ;
2169
2169
2170
2170
if (ident.empty ())
2171
2171
{
@@ -2411,7 +2411,7 @@ Parser<ManagedTokenSource>::parse_module (AST::Visibility vis,
2411
2411
{
2412
2412
return nullptr;
2413
2413
}
2414
- Identifier name{module_name->get_str () };
2414
+ Identifier name{module_name};
2415
2415
2416
2416
const_TokenPtr t = lexer.peek_token ();
2417
2417
@@ -2817,15 +2817,15 @@ Parser<ManagedTokenSource>::parse_use_tree ()
2817
2817
2818
2818
return std::unique_ptr<AST::UseTreeRebind> (
2819
2819
new AST::UseTreeRebind (AST::UseTreeRebind::IDENTIFIER,
2820
- std::move (path), locus,
2821
- t->get_str ()));
2820
+ std::move (path), locus, t));
2822
2821
case UNDERSCORE:
2823
2822
// skip lexer token
2824
2823
lexer.skip_token ();
2825
2824
2826
2825
return std::unique_ptr<AST::UseTreeRebind> (
2827
2826
new AST::UseTreeRebind (AST::UseTreeRebind::WILDCARD,
2828
- std::move (path), locus, {"_"}));
2827
+ std::move (path), locus,
2828
+ {"_", t->get_locus ()}));
2829
2829
default:
2830
2830
add_error (Error (
2831
2831
t->get_locus (),
@@ -2882,7 +2882,7 @@ Parser<ManagedTokenSource>::parse_function (AST::Visibility vis,
2882
2882
skip_after_next_block ();
2883
2883
return nullptr;
2884
2884
}
2885
- Identifier function_name = function_name_tok->get_str () ;
2885
+ Identifier function_name{ function_name_tok} ;
2886
2886
2887
2887
// parse generic params - if exist
2888
2888
std::vector<std::unique_ptr<AST::GenericParam>> generic_params
@@ -3500,8 +3500,7 @@ Parser<ManagedTokenSource>::parse_type_param ()
3500
3500
// identifier
3501
3501
return nullptr;
3502
3502
}
3503
- // TODO: create identifier from identifier token
3504
- Identifier ident = identifier_tok->get_str ();
3503
+ Identifier ident{identifier_tok};
3505
3504
lexer.skip_token ();
3506
3505
3507
3506
// parse type param bounds (if they exist)
@@ -4131,7 +4130,7 @@ Parser<ManagedTokenSource>::parse_type_alias (AST::Visibility vis,
4131
4130
skip_after_semicolon ();
4132
4131
return nullptr;
4133
4132
}
4134
- Identifier alias_name = alias_name_tok->get_str () ;
4133
+ Identifier alias_name{ alias_name_tok} ;
4135
4134
4136
4135
// parse generic params, which may not exist
4137
4136
std::vector<std::unique_ptr<AST::GenericParam>> generic_params
@@ -4191,7 +4190,7 @@ Parser<ManagedTokenSource>::parse_struct (AST::Visibility vis,
4191
4190
// skip after somewhere?
4192
4191
return nullptr;
4193
4192
}
4194
- Identifier struct_name = name_tok->get_str () ;
4193
+ Identifier struct_name{ name_tok} ;
4195
4194
4196
4195
// parse generic params, which may or may not exist
4197
4196
std::vector<std::unique_ptr<AST::GenericParam>> generic_params
@@ -4387,7 +4386,7 @@ Parser<ManagedTokenSource>::parse_struct_field ()
4387
4386
// necessarily error
4388
4387
return AST::StructField::create_error ();
4389
4388
}
4390
- Identifier field_name = field_name_tok->get_str () ;
4389
+ Identifier field_name{ field_name_tok} ;
4391
4390
lexer.skip_token ();
4392
4391
4393
4392
if (!skip_token (COLON))
@@ -4513,7 +4512,7 @@ Parser<ManagedTokenSource>::parse_enum (AST::Visibility vis,
4513
4512
if (enum_name_tok == nullptr)
4514
4513
return nullptr;
4515
4514
4516
- Identifier enum_name = enum_name_tok->get_str () ;
4515
+ Identifier enum_name = { enum_name_tok} ;
4517
4516
4518
4517
// parse generic params (of enum container, not enum variants) if they exist
4519
4518
std::vector<std::unique_ptr<AST::GenericParam>> generic_params
@@ -4643,7 +4642,7 @@ Parser<ManagedTokenSource>::parse_enum_item ()
4643
4642
return nullptr;
4644
4643
}
4645
4644
lexer.skip_token ();
4646
- Identifier item_name = item_name_tok->get_str () ;
4645
+ Identifier item_name{ item_name_tok} ;
4647
4646
4648
4647
// branch based on next token
4649
4648
const_TokenPtr t = lexer.peek_token ();
@@ -4727,7 +4726,7 @@ Parser<ManagedTokenSource>::parse_union (AST::Visibility vis,
4727
4726
skip_after_next_block ();
4728
4727
return nullptr;
4729
4728
}
4730
- Identifier union_name = union_name_tok->get_str () ;
4729
+ Identifier union_name{ union_name_tok} ;
4731
4730
4732
4731
// parse optional generic parameters
4733
4732
std::vector<std::unique_ptr<AST::GenericParam>> generic_params
@@ -4845,7 +4844,7 @@ Parser<ManagedTokenSource>::parse_static_item (AST::Visibility vis,
4845
4844
if (ident_tok == nullptr)
4846
4845
return nullptr;
4847
4846
4848
- Identifier ident = ident_tok->get_str () ;
4847
+ Identifier ident{ ident_tok} ;
4849
4848
4850
4849
if (!skip_token (COLON))
4851
4850
{
@@ -4906,7 +4905,7 @@ Parser<ManagedTokenSource>::parse_trait (AST::Visibility vis,
4906
4905
if (ident_tok == nullptr)
4907
4906
return nullptr;
4908
4907
4909
- Identifier ident = ident_tok->get_str () ;
4908
+ Identifier ident{ ident_tok} ;
4910
4909
4911
4910
// parse generic parameters (if they exist)
4912
4911
std::vector<std::unique_ptr<AST::GenericParam>> generic_params
@@ -5027,7 +5026,7 @@ Parser<ManagedTokenSource>::parse_trait_item ()
5027
5026
if (ident_tok == nullptr)
5028
5027
return nullptr;
5029
5028
5030
- Identifier ident = ident_tok->get_str () ;
5029
+ Identifier ident{ ident_tok} ;
5031
5030
5032
5031
// parse generic params
5033
5032
std::vector<std::unique_ptr<AST::GenericParam>> generic_params
@@ -5162,7 +5161,7 @@ Parser<ManagedTokenSource>::parse_trait_type (AST::AttrVec outer_attrs)
5162
5161
if (ident_tok == nullptr)
5163
5162
return nullptr;
5164
5163
5165
- Identifier ident = ident_tok->get_str () ;
5164
+ Identifier ident{ ident_tok} ;
5166
5165
5167
5166
std::vector<std::unique_ptr<AST::TypeParamBound>> bounds;
5168
5167
@@ -5201,7 +5200,7 @@ Parser<ManagedTokenSource>::parse_trait_const (AST::AttrVec outer_attrs)
5201
5200
if (ident_tok == nullptr)
5202
5201
return nullptr;
5203
5202
5204
- Identifier ident = ident_tok->get_str () ;
5203
+ Identifier ident{ ident_tok} ;
5205
5204
5206
5205
if (!skip_token (COLON))
5207
5206
{
@@ -5568,7 +5567,7 @@ Parser<ManagedTokenSource>::parse_inherent_impl_function_or_method (
5568
5567
if (ident_tok == nullptr)
5569
5568
return nullptr;
5570
5569
5571
- Identifier ident = ident_tok->get_str () ;
5570
+ Identifier ident{ ident_tok} ;
5572
5571
5573
5572
// parse generic params
5574
5573
std::vector<std::unique_ptr<AST::GenericParam>> generic_params
@@ -5763,7 +5762,7 @@ Parser<ManagedTokenSource>::parse_trait_impl_function_or_method (
5763
5762
{
5764
5763
return nullptr;
5765
5764
}
5766
- Identifier ident = ident_tok->get_str () ;
5765
+ Identifier ident{ ident_tok} ;
5767
5766
5768
5767
// DEBUG:
5769
5768
rust_debug (
@@ -5995,7 +5994,7 @@ Parser<ManagedTokenSource>::parse_external_item ()
5995
5994
skip_after_semicolon ();
5996
5995
return nullptr;
5997
5996
}
5998
- Identifier ident = ident_tok->get_str () ;
5997
+ Identifier ident{ ident_tok} ;
5999
5998
6000
5999
if (!skip_token (COLON))
6001
6000
{
@@ -6038,7 +6037,7 @@ Parser<ManagedTokenSource>::parse_external_item ()
6038
6037
skip_after_semicolon ();
6039
6038
return nullptr;
6040
6039
}
6041
- Identifier ident = ident_tok->get_str () ;
6040
+ Identifier ident{ ident_tok} ;
6042
6041
6043
6042
// parse (optional) generic params
6044
6043
std::vector<std::unique_ptr<AST::GenericParam>> generic_params
@@ -6620,7 +6619,7 @@ Parser<ManagedTokenSource>::parse_generic_args_binding ()
6620
6619
return AST::GenericArgsBinding::create_error ();
6621
6620
}
6622
6621
lexer.skip_token ();
6623
- Identifier ident = ident_tok->get_str () ;
6622
+ Identifier ident{ ident_tok} ;
6624
6623
6625
6624
if (!skip_token (EQUAL))
6626
6625
{
@@ -7189,7 +7188,7 @@ Parser<ManagedTokenSource>::parse_method ()
7189
7188
skip_after_next_block ();
7190
7189
return AST::Method::create_error ();
7191
7190
}
7192
- Identifier method_name = ident_tok->get_str () ;
7191
+ Identifier method_name{ ident_tok} ;
7193
7192
7194
7193
// parse generic params - if exist
7195
7194
std::vector<std::unique_ptr<AST::GenericParam>> generic_params
@@ -9659,14 +9658,14 @@ Parser<ManagedTokenSource>::parse_maybe_named_param (AST::AttrVec outer_attrs)
9659
9658
if (current->get_id () == IDENTIFIER && next->get_id () == COLON)
9660
9659
{
9661
9660
// named param
9662
- name = current->get_str () ;
9661
+ name = { current} ;
9663
9662
kind = AST::MaybeNamedParam::IDENTIFIER;
9664
9663
lexer.skip_token (1);
9665
9664
}
9666
9665
else if (current->get_id () == UNDERSCORE && next->get_id () == COLON)
9667
9666
{
9668
9667
// wildcard param
9669
- name = {"_"};
9668
+ name = {"_", current->get_locus () };
9670
9669
kind = AST::MaybeNamedParam::WILDCARD;
9671
9670
lexer.skip_token (1);
9672
9671
}
@@ -11093,7 +11092,7 @@ Parser<ManagedTokenSource>::parse_identifier_pattern ()
11093
11092
// skip somewhere?
11094
11093
return nullptr;
11095
11094
}
11096
- Identifier ident = ident_tok->get_str () ;
11095
+ Identifier ident{ ident_tok} ;
11097
11096
11098
11097
// DEBUG
11099
11098
rust_debug ("parsed identifier in identifier pattern");
@@ -11518,7 +11517,7 @@ Parser<ManagedTokenSource>::parse_struct_pattern_field_partial (
11518
11517
{
11519
11518
case COLON: {
11520
11519
// identifier-pattern
11521
- Identifier ident = t->get_str () ;
11520
+ Identifier ident{t} ;
11522
11521
lexer.skip_token ();
11523
11522
11524
11523
skip_token (COLON);
@@ -11543,7 +11542,7 @@ Parser<ManagedTokenSource>::parse_struct_pattern_field_partial (
11543
11542
case COMMA:
11544
11543
case RIGHT_CURLY: {
11545
11544
// identifier only
11546
- Identifier ident = t->get_str () ;
11545
+ Identifier ident = {t} ;
11547
11546
lexer.skip_token ();
11548
11547
11549
11548
return std::unique_ptr<AST::StructPatternFieldIdent> (
@@ -11581,7 +11580,7 @@ Parser<ManagedTokenSource>::parse_struct_pattern_field_partial (
11581
11580
{
11582
11581
return nullptr;
11583
11582
}
11584
- Identifier ident = ident_tok->get_str () ;
11583
+ Identifier ident{ ident_tok} ;
11585
11584
11586
11585
return std::unique_ptr<AST::StructPatternFieldIdent> (
11587
11586
new AST::StructPatternFieldIdent (std::move (ident), has_ref, has_mut,
@@ -11821,7 +11820,7 @@ Parser<ManagedTokenSource>::parse_struct_expr_field ()
11821
11820
if (lexer.peek_token (1)->get_id () == COLON)
11822
11821
{
11823
11822
// struct expr field with identifier and expr
11824
- Identifier ident = t->get_str () ;
11823
+ Identifier ident = {t} ;
11825
11824
lexer.skip_token (1);
11826
11825
11827
11826
// parse expression (required)
@@ -11844,7 +11843,7 @@ Parser<ManagedTokenSource>::parse_struct_expr_field ()
11844
11843
else
11845
11844
{
11846
11845
// struct expr field with identifier only
11847
- Identifier ident = t->get_str () ;
11846
+ Identifier ident{t} ;
11848
11847
lexer.skip_token ();
11849
11848
11850
11849
return std::unique_ptr<AST::StructExprFieldIdentifier> (
@@ -13975,7 +13974,7 @@ Parser<ManagedTokenSource>::parse_field_access_expr (
13975
13974
if (ident_tok == nullptr)
13976
13975
return nullptr;
13977
13976
13978
- Identifier ident = ident_tok->get_str () ;
13977
+ Identifier ident{ ident_tok} ;
13979
13978
13980
13979
Location locus = struct_expr->get_locus ();
13981
13980
0 commit comments