[gcc r14-7637] gccrs: converter: Refactor locations

Arthur Cohen cohenarthur@gcc.gnu.org
Tue Jan 16 17:49:29 GMT 2024


https://gcc.gnu.org/g:b671794333679413af5974a3a5671ce0f336b1d9

commit r14-7637-gb671794333679413af5974a3a5671ce0f336b1d9
Author: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
Date:   Wed May 31 13:08:10 2023 +0200

    gccrs: converter: Refactor locations
    
    Refactor location to make code smaller and cleaner.
    
    gcc/rust/ChangeLog:
    
            * util/rust-token-converter.cc (convert): Use a variable instead
            of multiple nested calls.
    
    Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>

Diff:
---
 gcc/rust/util/rust-token-converter.cc | 26 +++++++++-----------------
 1 file changed, 9 insertions(+), 17 deletions(-)

diff --git a/gcc/rust/util/rust-token-converter.cc b/gcc/rust/util/rust-token-converter.cc
index d8b9090c8d2..e7d9a65991d 100644
--- a/gcc/rust/util/rust-token-converter.cc
+++ b/gcc/rust/util/rust-token-converter.cc
@@ -82,6 +82,7 @@ convert (const std::vector<const_TokenPtr> &tokens)
   trees.push_back (ProcMacro::TokenStream::make_tokenstream ());
   for (auto &token : tokens)
     {
+      auto loc = convert (token->get_locus ());
       switch (token->get_id ())
 	{
 	// Literals
@@ -96,26 +97,22 @@ convert (const std::vector<const_TokenPtr> &tokens)
 	case CHAR_LITERAL:
 	  trees.back ().push (ProcMacro::TokenTree::make_tokentree (
 	    ProcMacro::Literal::make_literal (ProcMacro::LitKind::make_char (),
-					      convert (token->get_locus ()),
-					      token->as_string ())));
+					      loc, token->as_string ())));
 	  break;
 	case STRING_LITERAL:
 	  trees.back ().push (ProcMacro::TokenTree::make_tokentree (
 	    ProcMacro::Literal::make_literal (ProcMacro::LitKind::make_str (),
-					      convert (token->get_locus ()),
-					      token->as_string ())));
+					      loc, token->as_string ())));
 	  break;
 	case BYTE_CHAR_LITERAL:
 	  trees.back ().push (ProcMacro::TokenTree::make_tokentree (
 	    ProcMacro::Literal::make_literal (ProcMacro::LitKind::make_byte (),
-					      convert (token->get_locus ()),
-					      token->as_string ())));
+					      loc, token->as_string ())));
 	  break;
 	case BYTE_STRING_LITERAL:
 	  trees.back ().push (ProcMacro::TokenTree::make_tokentree (
 	    ProcMacro::Literal::make_literal (
-	      ProcMacro::LitKind::make_byte_str (),
-	      convert (token->get_locus ()), token->as_string ())));
+	      ProcMacro::LitKind::make_byte_str (), loc, token->as_string ())));
 	  break;
 	// Ident
 	case IDENTIFIER:
@@ -175,8 +172,7 @@ convert (const std::vector<const_TokenPtr> &tokens)
 	case FALSE_LITERAL:
 	case TRUE_LITERAL:
 	  trees.back ().push (ProcMacro::TokenTree::make_tokentree (
-	    ProcMacro::Ident::make_ident (token->as_string (),
-					  convert (token->get_locus ()))));
+	    ProcMacro::Ident::make_ident (token->as_string (), loc)));
 	  break;
 	// Joint punct
 	case OR:
@@ -207,12 +203,9 @@ convert (const std::vector<const_TokenPtr> &tokens)
 	    auto it = str.cbegin ();
 	    for (; it != str.cend () - 1; it++)
 	      trees.back ().push (ProcMacro::TokenTree::make_tokentree (
-		ProcMacro::Punct::make_punct (*it,
-					      convert (token->get_locus ()),
-					      ProcMacro::JOINT)));
+		ProcMacro::Punct::make_punct (*it, loc, ProcMacro::JOINT)));
 	    trees.back ().push (ProcMacro::TokenTree::make_tokentree (
-	      ProcMacro::Punct::make_punct (*it, convert (token->get_locus ()),
-					    ProcMacro::ALONE)));
+	      ProcMacro::Punct::make_punct (*it, loc, ProcMacro::ALONE)));
 	  }
 	  break;
 	// Alone punct tokens
@@ -239,8 +232,7 @@ convert (const std::vector<const_TokenPtr> &tokens)
 	case QUESTION_MARK:
 	case SINGLE_QUOTE:
 	  trees.back ().push (ProcMacro::TokenTree::make_tokentree (
-	    ProcMacro::Punct::make_punct (token->as_string ()[0],
-					  convert (token->get_locus ()),
+	    ProcMacro::Punct::make_punct (token->as_string ()[0], loc,
 					  ProcMacro::ALONE)));
 	  break;
 	case RIGHT_PAREN:


More information about the Gcc-cvs mailing list