Skip to content

Commit

Permalink
Replace some weak keyword raw value with constexpr
Browse files Browse the repository at this point in the history
Raw values may have typos or contain error, replacing those will
improve the codebase.

gcc/rust/ChangeLog:

	* ast/rust-ast-collector.cc (TokenCollector::visit): Replace raw value.
	* parse/rust-parse-impl.h (Parser::is_macro_rules_def): Likewise.
	(Parser::parse_item): Likewise.
	(Parser::parse_vis_item): Likewise.
	(Parser::parse_macro_rules_def): Likewise.
	(Parser::parse_union): Likewise.
	(Parser::parse_trait_impl_item): Likewise.
	(Parser::parse_stmt): Likewise.
	(Parser::parse_stmt_or_expr): Likewise.

Signed-off-by: Pierre-Emmanuel Patry <[email protected]>
  • Loading branch information
P-E-P committed Nov 16, 2023
1 parent c871375 commit b1a014b
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 13 deletions.
6 changes: 4 additions & 2 deletions gcc/rust/ast/rust-ast-collector.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1945,7 +1945,8 @@ TokenCollector::visit (Union &union_item)
{
visit_items_as_lines (union_item.get_outer_attrs ());
auto id = union_item.get_identifier ().as_string ();
push (Rust::Token::make_identifier (union_item.get_locus (), "union"));
push (Rust::Token::make_identifier (union_item.get_locus (),
Values::WeakKeywords::UNION));
push (Rust::Token::make_identifier (UNDEF_LOCATION, std::move (id)));

if (union_item.has_generics ())
Expand Down Expand Up @@ -2326,7 +2327,8 @@ TokenCollector::visit (MacroRulesDefinition &rules_def)

auto rule_name = rules_def.get_rule_name ().as_string ();

push (Rust::Token::make_identifier (rules_def.get_locus (), "macro_rules"));
push (Rust::Token::make_identifier (rules_def.get_locus (),
Values::WeakKeywords::MACRO_RULES));
push (Rust::Token::make (EXCLAM, UNDEF_LOCATION));

push (Rust::Token::make_identifier (UNDEF_LOCATION, std::move (rule_name)));
Expand Down
24 changes: 13 additions & 11 deletions gcc/rust/parse/rust-parse-impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -1084,7 +1084,7 @@ Parser<ManagedTokenSource>::is_macro_rules_def (const_TokenPtr t)

bool allowed_macro_name = (macro_name == IDENTIFIER || macro_name == TRY);

return t->get_str () == "macro_rules"
return t->get_str () == Values::WeakKeywords::MACRO_RULES
&& lexer.peek_token (1)->get_id () == EXCLAM && allowed_macro_name;
}

Expand Down Expand Up @@ -1145,13 +1145,13 @@ Parser<ManagedTokenSource>::parse_item (bool called_from_statement)
// crappy hack to do union "keyword"
case IDENTIFIER:
// TODO: ensure std::string and literal comparison works
if (t->get_str () == "union"
if (t->get_str () == Values::WeakKeywords::UNION
&& lexer.peek_token (1)->get_id () == IDENTIFIER)
{
return parse_vis_item (std::move (outer_attrs));
// or should this go straight to parsing union?
}
else if (t->get_str () == "default"
else if (t->get_str () == Values::WeakKeywords::DEFAULT
&& lexer.peek_token (1)->get_id () != EXCLAM)
{
add_error (Error (t->get_locus (),
Expand Down Expand Up @@ -1356,7 +1356,7 @@ Parser<ManagedTokenSource>::parse_vis_item (AST::AttrVec outer_attrs)
// TODO: implement union keyword but not really because of
// context-dependence case UNION: crappy hack to do union "keyword"
case IDENTIFIER:
if (t->get_str () == "union"
if (t->get_str () == Values::WeakKeywords::UNION
&& lexer.peek_token (1)->get_id () == IDENTIFIER)
{
return parse_union (std::move (vis), std::move (outer_attrs));
Expand Down Expand Up @@ -1435,7 +1435,8 @@ Parser<ManagedTokenSource>::parse_macro_rules_def (AST::AttrVec outer_attrs)
{
// ensure that first token is identifier saying "macro_rules"
const_TokenPtr t = lexer.peek_token ();
if (t->get_id () != IDENTIFIER || t->get_str () != "macro_rules")
if (t->get_id () != IDENTIFIER
|| t->get_str () != Values::WeakKeywords::MACRO_RULES)
{
Error error (
t->get_locus (),
Expand Down Expand Up @@ -4728,7 +4729,7 @@ Parser<ManagedTokenSource>::parse_union (AST::Visibility vis,
/* hack - "weak keyword" by finding identifier called "union" (lookahead in
* item switch) */
const_TokenPtr union_keyword = expect_token (IDENTIFIER);
rust_assert (union_keyword->get_str () == "union");
rust_assert (union_keyword->get_str () == Values::WeakKeywords::UNION);
location_t locus = union_keyword->get_locus ();

// parse actual union name
Expand Down Expand Up @@ -5712,7 +5713,7 @@ Parser<ManagedTokenSource>::parse_trait_impl_item ()
// semi
return parse_macro_invocation_semi (std::move (outer_attrs));
case IDENTIFIER:
if (lexer.peek_token ()->get_str () == "default")
if (lexer.peek_token ()->get_str () == Values::WeakKeywords::DEFAULT)
return parse_trait_impl_function_or_method (visibility,
std::move (outer_attrs));
else
Expand Down Expand Up @@ -5776,7 +5777,8 @@ Parser<ManagedTokenSource>::parse_trait_impl_function_or_method (

auto is_default = false;
auto t = lexer.peek_token ();
if (t->get_id () == IDENTIFIER && t->get_str () == "default")
if (t->get_id () == IDENTIFIER
&& t->get_str () == Values::WeakKeywords::DEFAULT)
{
is_default = true;
lexer.skip_token ();
Expand Down Expand Up @@ -6293,7 +6295,7 @@ Parser<ManagedTokenSource>::parse_stmt (ParseRestrictions restrictions)
break;
// crappy hack to do union "keyword"
case IDENTIFIER:
if (t->get_str () == "union"
if (t->get_str () == Values::WeakKeywords::UNION
&& lexer.peek_token (1)->get_id () == IDENTIFIER)
{
return parse_vis_item (std::move (outer_attrs));
Expand Down Expand Up @@ -11694,15 +11696,15 @@ Parser<ManagedTokenSource>::parse_stmt_or_expr ()

// crappy hack to do union "keyword"
case IDENTIFIER:
if (t->get_str () == "union"
if (t->get_str () == Values::WeakKeywords::UNION
&& lexer.peek_token (1)->get_id () == IDENTIFIER)
{
std::unique_ptr<AST::VisItem> item (
parse_vis_item (std::move (outer_attrs)));
return ExprOrStmt (std::move (item));
// or should this go straight to parsing union?
}
else if (t->get_str () == "macro_rules"
else if (t->get_str () == Values::WeakKeywords::MACRO_RULES
&& lexer.peek_token (1)->get_id () == EXCLAM)
{
// macro_rules! macro item
Expand Down

0 comments on commit b1a014b

Please sign in to comment.