From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-x42e.google.com (mail-wr1-x42e.google.com [IPv6:2a00:1450:4864:20::42e]) by sourceware.org (Postfix) with ESMTPS id AE6F23857C50 for ; Tue, 30 Jan 2024 12:11:12 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org AE6F23857C50 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=embecosm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=embecosm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org AE6F23857C50 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::42e ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1706616686; cv=none; b=R62KFNy+sU93CMp6ETp+Z/MPTSn4oSBgwlvPvpMA0Ju9tTrieYHjHb4lPmiqvQyQlwbE6/zTRcSpObHUnC2owG6glsDSXvFiG839UNalFc51m2yBJtfPbl9RbIiWa+db5mm5OpwLDeiI+Dv9iYFC6YwWi1nwAgSojLzyESxQMAI= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1706616686; c=relaxed/simple; bh=e7MDRmHwX+8o9Y7E0b/i7G8FA2sKcmFCz9TYMesq15U=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=t73LfsLCu9YMmH9rHWD9k2rn7QbDadgYDSKvn8utVRQ0fPyx3RXK49V8GrLhcGlRS490GpTftm36/9sbWXfTyU1SeBTZTHQXh0nN5iPMdBgQJJTGkWJwh6xYugJzthD/QLXc7p8pS7rzEK1rFsgz6hrJZHCaL0l9V/RMOibgGmo= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-wr1-x42e.google.com with SMTP id ffacd0b85a97d-33ae74e5394so1285600f8f.3 for ; Tue, 30 Jan 2024 04:11:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=embecosm.com; s=google; t=1706616671; x=1707221471; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:reply-to:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to; bh=Lm0Um1BuS8z6KeEky56sUOYmtudG6PQX5VEvTBMwogU=; b=SGWM9ph0RBS9eXmXHHxpVrPIuSlovZ6eAb5AdepSLCc74d0y59Q65JmkIjvU1C6YWf OQ+nxfaOmxhUwVAX2mnC9zp3XD6g1fuANTExMQIEE3xl5nIBnjMKMO+0Tv/njuW+WMwR aA5FqWwEjDUyG+GbI1kom9w0x6WjiLPwgixl9TImsHuN9R8juzgSbO7eBkXE+ocBgzzX LNFYJX4mTZTEuDPTDYvXL87N/vPeoEzGXPeJ9NsZfWVEkL1Sn3iH570X5wctXx9Gx0dr UdufehdDHEibSX7KoRIXEpG0CAe8iOkY6+5WcGDVWI1fcxlZ03dowe7Uvo3b/dlRnEM2 md5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706616671; x=1707221471; h=content-transfer-encoding:mime-version:reply-to:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=Lm0Um1BuS8z6KeEky56sUOYmtudG6PQX5VEvTBMwogU=; b=ejDRVhPjStW3oJaAbCid+XdC+sJWekrR3JCJAV8E0myRqavM9vIjGRq9KdNa9B1kwQ Dl63kyM7AVfk7HwvcKqSrFAij80CdLbmnk8mOZzpAAhD5HCpIsbTZZeMGZxVs4Ox1qN8 wPCIbDyIL9Y9oza/zwNblN8s/a4k1AbW5QbNDklIKxY+f1lA/0itL/JYu7b5ODa879VN LBGAn6OWYL+34umbKib4pSry62HuSJR9S72VHbPoMhncgGrE+vj2988sxc9gpW7iX67f JvjR0gGuBDySc+C0fwMDcvYG7AMdg3XfhdE7hBYNbgTGPTf31dO5zeB0so09bojAon0n vg1g== X-Gm-Message-State: AOJu0Yxc+dtPuAmcu9yNaeqC54hvYPshydHhH2xaBVXbQWMyBMsw7D62 9uAwbH4xujjhhoMPCvcIpf9nZ+a1zXLxt9vO4Y7joVS1hhHedL9HgoQGCv1R4w== X-Google-Smtp-Source: AGHT+IEknZ2eI2jk03R6lmV6y1yls/3wC0AhPvVNV25RoNLzCGIpHh+isdL2zWsWWiYk2K1RGtdNIw== X-Received: by 2002:a05:6000:1a8c:b0:33a:ed47:2858 with SMTP id f12-20020a0560001a8c00b0033aed472858mr4904709wry.63.1706616671512; Tue, 30 Jan 2024 04:11:11 -0800 (PST) Received: from platypus.localdomain ([62.23.166.218]) by smtp.gmail.com with ESMTPSA id f9-20020a056000036900b00339307d9d31sm10569894wrf.112.2024.01.30.04.11.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Jan 2024 04:11:10 -0800 (PST) From: arthur.cohen@embecosm.com To: gcc-patches@gcc.gnu.org Cc: gcc-rust@gcc.gnu.org, Pierre-Emmanuel Patry Subject: [COMMITTED 028/101] gccrs: Replace some keyword raw values Date: Tue, 30 Jan 2024 13:06:44 +0100 Message-ID: <20240130121026.807464-31-arthur.cohen@embecosm.com> X-Mailer: git-send-email 2.42.1 In-Reply-To: <20240130121026.807464-2-arthur.cohen@embecosm.com> References: <20240130121026.807464-2-arthur.cohen@embecosm.com> Reply-To: arthur.cohen@embecosm.com MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-14.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: From: Pierre-Emmanuel Patry Raw values cannot be understood easily by most tools. This commit replace some raw values with their variable counterpart. gcc/rust/ChangeLog: * ast/rust-ast-collector.cc (TokenCollector::visit): Replace raw value with keyword call. * ast/rust-ast.h: Likewise. * parse/rust-parse-impl.h (Parser::parse_path_ident_segment): Likewise. (Parser::parse_macro_match_fragment): Likewise. (Parser::parse_extern_crate): Likewise. (Parser::parse_use_tree): Likewise. (Parser::parse_const_item): Likewise. (Parser::parse_literal_expr): Likewise. (Parser::parse_maybe_named_param): Likewise. (Parser::parse_pattern_no_alt): Likewise. (Parser::left_denotation): Likewise. (Parser::parse_path_in_expression_pratt): Likewise. Signed-off-by: Pierre-Emmanuel Patry --- gcc/rust/ast/rust-ast-collector.cc | 13 ++++---- gcc/rust/ast/rust-ast.h | 24 ++++++++++---- gcc/rust/parse/rust-parse-impl.h | 52 +++++++++++++++++------------- 3 files changed, 53 insertions(+), 36 deletions(-) diff --git a/gcc/rust/ast/rust-ast-collector.cc b/gcc/rust/ast/rust-ast-collector.cc index 8f394e595ed..5b12875c349 100644 --- a/gcc/rust/ast/rust-ast-collector.cc +++ b/gcc/rust/ast/rust-ast-collector.cc @@ -17,6 +17,7 @@ // . #include "rust-ast-collector.h" #include "rust-item.h" +#include "rust-keyword-values.h" namespace Rust { namespace AST { @@ -461,11 +462,11 @@ TokenCollector::visit (Lifetime &lifetime) break; case Lifetime::LifetimeType::STATIC: push (Rust::Token::make_lifetime (lifetime.get_locus (), - std::move ("static"))); + Values::Keywords::STATIC_KW)); break; case Lifetime::LifetimeType::WILDCARD: - push ( - Rust::Token::make_lifetime (lifetime.get_locus (), std::move ("_"))); + push (Rust::Token::make_lifetime (lifetime.get_locus (), + Values::Keywords::UNDERSCORE)); break; } } @@ -787,9 +788,9 @@ TokenCollector::visit (Literal &lit, location_t locus) lit.get_type_hint ())); break; case Literal::LitType::BOOL: { - if (value == "false") + if (value == Values::Keywords::FALSE_LITERAL) push (Rust::Token::make (FALSE_LITERAL, locus)); - else if (value == "true") + else if (value == Values::Keywords::TRUE_LITERAL) push (Rust::Token::make (TRUE_LITERAL, locus)); else rust_unreachable (); // Not a boolean @@ -1484,7 +1485,7 @@ TokenCollector::visit (AwaitExpr &expr) visit (expr.get_awaited_expr ()); push (Rust::Token::make (DOT, expr.get_locus ())); // TODO: Check status of await keyword (Context dependant ?) - push (Rust::Token::make_identifier (UNDEF_LOCATION, "await")); + push (Rust::Token::make_identifier (UNDEF_LOCATION, Values::Keywords::AWAIT)); } void diff --git a/gcc/rust/ast/rust-ast.h b/gcc/rust/ast/rust-ast.h index 47c02d6ac8b..4049e4d2607 100644 --- a/gcc/rust/ast/rust-ast.h +++ b/gcc/rust/ast/rust-ast.h @@ -25,6 +25,7 @@ #include "rust-token.h" #include "rust-location.h" #include "rust-diagnostics.h" +#include "rust-keyword-values.h" namespace Rust { // TODO: remove typedefs and make actual types for these @@ -393,14 +394,20 @@ public: const std::string &get_segment_name () const { return segment_name; } bool is_super_path_seg () const { - return as_string ().compare ("super") == 0; + return as_string ().compare (Values::Keywords::SUPER) == 0; } bool is_crate_path_seg () const { - return as_string ().compare ("crate") == 0; + return as_string ().compare (Values::Keywords::CRATE) == 0; + } + bool is_lower_self_seg () const + { + return as_string ().compare (Values::Keywords::SELF) == 0; + } + bool is_big_self () const + { + return as_string ().compare (Values::Keywords::SELF_ALIAS) == 0; } - bool is_lower_self_seg () const { return as_string ().compare ("self") == 0; } - bool is_big_self () const { return as_string ().compare ("Self") == 0; } }; // A simple path without generic or type arguments @@ -562,7 +569,8 @@ public: location_t crate_vis_location) { return Visibility (PUB_CRATE, - SimplePath::from_str ("crate", crate_tok_location), + SimplePath::from_str (Values::Keywords::CRATE, + crate_tok_location), crate_vis_location); } @@ -571,7 +579,8 @@ public: location_t self_vis_location) { return Visibility (PUB_SELF, - SimplePath::from_str ("self", self_tok_location), + SimplePath::from_str (Values::Keywords::SELF, + self_tok_location), self_vis_location); } @@ -580,7 +589,8 @@ public: location_t super_vis_location) { return Visibility (PUB_SUPER, - SimplePath::from_str ("super", super_tok_location), + SimplePath::from_str (Values::Keywords::SUPER, + super_tok_location), super_vis_location); } diff --git a/gcc/rust/parse/rust-parse-impl.h b/gcc/rust/parse/rust-parse-impl.h index 8b006142b16..28659060568 100644 --- a/gcc/rust/parse/rust-parse-impl.h +++ b/gcc/rust/parse/rust-parse-impl.h @@ -743,19 +743,20 @@ Parser::parse_path_ident_segment () case SUPER: lexer.skip_token (); - return AST::PathIdentSegment ("super", t->get_locus ()); + return AST::PathIdentSegment (Values::Keywords::SUPER, t->get_locus ()); case SELF: lexer.skip_token (); - return AST::PathIdentSegment ("self", t->get_locus ()); + return AST::PathIdentSegment (Values::Keywords::SELF, t->get_locus ()); case SELF_ALIAS: lexer.skip_token (); - return AST::PathIdentSegment ("Self", t->get_locus ()); + return AST::PathIdentSegment (Values::Keywords::SELF_ALIAS, + t->get_locus ()); case CRATE: lexer.skip_token (); - return AST::PathIdentSegment ("crate", t->get_locus ()); + return AST::PathIdentSegment (Values::Keywords::CRATE, t->get_locus ()); case DOLLAR_SIGN: if (lexer.peek_token (1)->get_id () == CRATE) { @@ -2141,7 +2142,7 @@ Parser::parse_macro_match_fragment () Identifier ident; auto identifier = lexer.peek_token (); if (identifier->get_id () == UNDERSCORE) - ident = {"_", identifier->get_locus ()}; + ident = {Values::Keywords::UNDERSCORE, identifier->get_locus ()}; else ident = {identifier}; @@ -2506,7 +2507,7 @@ Parser::parse_extern_crate (AST::Visibility vis, lexer.skip_token (); break; case SELF: - crate_name = "self"; + crate_name = Values::Keywords::SELF; lexer.skip_token (); break; default: @@ -2547,7 +2548,7 @@ Parser::parse_extern_crate (AST::Visibility vis, lexer.skip_token (); break; case UNDERSCORE: - as_name = "_"; + as_name = Values::Keywords::UNDERSCORE; lexer.skip_token (); break; default: @@ -2806,7 +2807,8 @@ Parser::parse_use_tree () return std::unique_ptr ( new AST::UseTreeRebind (AST::UseTreeRebind::WILDCARD, std::move (path), locus, - {"_", t->get_locus ()})); + {Values::Keywords::UNDERSCORE, + t->get_locus ()})); default: add_error (Error ( t->get_locus (), @@ -4788,7 +4790,7 @@ Parser::parse_const_item (AST::Visibility vis, * wildcard */ const_TokenPtr ident_tok = lexer.peek_token (); // make default identifier the underscore wildcard one - std::string ident ("_"); + std::string ident (Values::Keywords::UNDERSCORE); switch (ident_tok->get_id ()) { case IDENTIFIER: @@ -7640,12 +7642,12 @@ Parser::parse_literal_expr (AST::AttrVec outer_attrs) // use true and false keywords rather than "bool literal" Rust terminology case TRUE_LITERAL: type = AST::Literal::BOOL; - literal_value = "true"; + literal_value = Values::Keywords::TRUE_LITERAL; lexer.skip_token (); break; case FALSE_LITERAL: type = AST::Literal::BOOL; - literal_value = "false"; + literal_value = Values::Keywords::FALSE_LITERAL; lexer.skip_token (); break; default: @@ -9654,7 +9656,7 @@ Parser::parse_maybe_named_param (AST::AttrVec outer_attrs) else if (current->get_id () == UNDERSCORE && next->get_id () == COLON) { // wildcard param - name = {"_", current->get_locus ()}; + name = {Values::Keywords::UNDERSCORE, current->get_locus ()}; kind = AST::MaybeNamedParam::WILDCARD; lexer.skip_token (1); } @@ -10548,12 +10550,14 @@ Parser::parse_pattern_no_alt () case TRUE_LITERAL: lexer.skip_token (); return std::unique_ptr ( - new AST::LiteralPattern ("true", AST::Literal::BOOL, t->get_locus (), + new AST::LiteralPattern (Values::Keywords::TRUE_LITERAL, + AST::Literal::BOOL, t->get_locus (), t->get_type_hint ())); case FALSE_LITERAL: lexer.skip_token (); return std::unique_ptr ( - new AST::LiteralPattern ("false", AST::Literal::BOOL, t->get_locus (), + new AST::LiteralPattern (Values::Keywords::FALSE_LITERAL, + AST::Literal::BOOL, t->get_locus (), t->get_type_hint ())); case CHAR_LITERAL: case BYTE_CHAR_LITERAL: @@ -12383,12 +12387,14 @@ Parser::null_denotation_not_path ( tok->get_type_hint (), {}, tok->get_locus ())); case TRUE_LITERAL: return std::unique_ptr ( - new AST::LiteralExpr ("true", AST::Literal::BOOL, tok->get_type_hint (), - {}, tok->get_locus ())); + new AST::LiteralExpr (Values::Keywords::TRUE_LITERAL, + AST::Literal::BOOL, tok->get_type_hint (), {}, + tok->get_locus ())); case FALSE_LITERAL: return std::unique_ptr ( - new AST::LiteralExpr ("false", AST::Literal::BOOL, - tok->get_type_hint (), {}, tok->get_locus ())); + new AST::LiteralExpr (Values::Keywords::FALSE_LITERAL, + AST::Literal::BOOL, tok->get_type_hint (), {}, + tok->get_locus ())); case LEFT_PAREN: return parse_grouped_or_tuple_expr (std::move (outer_attrs), tok->get_locus ()); @@ -12877,7 +12883,7 @@ Parser::left_denotation (const_TokenPtr tok, const_TokenPtr next_tok = lexer.peek_token (); if (next_tok->get_id () == IDENTIFIER - && next_tok->get_str () == "await") + && next_tok->get_str () == Values::Keywords::AWAIT) { // await expression return parse_await_expr (tok, std::move (left), @@ -14367,16 +14373,16 @@ Parser::parse_path_in_expression_pratt (const_TokenPtr tok) initial_str = tok->get_str (); break; case SUPER: - initial_str = "super"; + initial_str = Values::Keywords::SUPER; break; case SELF: - initial_str = "self"; + initial_str = Values::Keywords::SELF; break; case SELF_ALIAS: - initial_str = "Self"; + initial_str = Values::Keywords::SELF_ALIAS; break; case CRATE: - initial_str = "crate"; + initial_str = Values::Keywords::CRATE; break; case DOLLAR_SIGN: if (lexer.peek_token ()->get_id () == CRATE) -- 2.42.1