[gcc r14-7938] gccrs: Invalid order of generic parameters

Arthur Cohen cohenarthur@gcc.gnu.org
Tue Jan 16 18:08:58 GMT 2024


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

commit r14-7938-gc7c9bbaa1a12c47ccd6e6c13cca6161e59f4fa5c
Author: Muhammad Mahad <mahadtxt@gmail.com>
Date:   Thu Aug 17 15:49:15 2023 +0500

    gccrs: Invalid order of generic parameters
    
    Added more userfriendly message.
    
    gcc/rust/ChangeLog:
    
            * parse/rust-parse-impl.h (Parser::parse_generic_params):
            Added more user friendly message.
    
    gcc/testsuite/ChangeLog:
    
            * rust/compile/generics13.rs:
            for dejagnu,
    
    Signed-off-by: Muhammad Mahad <mahadtxt@gmail.com>

Diff:
---
 gcc/rust/parse/rust-parse-impl.h         | 9 ++++++---
 gcc/testsuite/rust/compile/generics13.rs | 2 +-
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/gcc/rust/parse/rust-parse-impl.h b/gcc/rust/parse/rust-parse-impl.h
index 971d8c84955..d156ac2e48b 100644
--- a/gcc/rust/parse/rust-parse-impl.h
+++ b/gcc/rust/parse/rust-parse-impl.h
@@ -3142,9 +3142,12 @@ Parser<ManagedTokenSource>::parse_generic_params (EndTokenPred is_end_token)
 
   // FIXME: Add reordering hint
   if (order_error)
-    rust_error_at (generic_params.front ()->get_locus (),
-		   "invalid order for generic parameters: lifetimes should "
-		   "always come before types");
+    {
+      Error error (generic_params.front ()->get_locus (),
+		   "invalid order for generic parameters: lifetime parameters "
+		   "must be declared prior to type and const parameters");
+      add_error (std::move (error));
+    }
 
   generic_params.shrink_to_fit ();
   return generic_params;
diff --git a/gcc/testsuite/rust/compile/generics13.rs b/gcc/testsuite/rust/compile/generics13.rs
index 05c75c5f63d..b6b5eddae66 100644
--- a/gcc/testsuite/rust/compile/generics13.rs
+++ b/gcc/testsuite/rust/compile/generics13.rs
@@ -1 +1 @@
-struct Foo<A, 'a>; // { dg-error "invalid order for generic parameters: lifetimes should always come before types" }
+struct Foo<A, 'a>; // { dg-error "invalid order for generic parameters: lifetime parameters must be declared prior to type and const parameters" }


More information about the Gcc-cvs mailing list