From: Muhammad Mahad Date: Mon, 14 Aug 2023 12:09:25 +0000 (+0500) Subject: gccrs: Non-allowed default type paramters X-Git-Tag: basepoints/gcc-15~2208 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dd343c42d25d2ab2cc1549c5cf608d7d6b3f0589;p=thirdparty%2Fgcc.git gccrs: Non-allowed default type paramters gcc/rust/ChangeLog: * hir/rust-ast-lower-item.cc (ASTLoweringItem::visit): Added more helpful error message. gcc/testsuite/ChangeLog: * rust/compile/generics10.rs: for dejagnu. Signed-off-by: Muhammad Mahad --- diff --git a/gcc/rust/hir/rust-ast-lower-item.cc b/gcc/rust/hir/rust-ast-lower-item.cc index 6eaf75ffd0b4..6d91c23e8d23 100644 --- a/gcc/rust/hir/rust-ast-lower-item.cc +++ b/gcc/rust/hir/rust-ast-lower-item.cc @@ -499,10 +499,15 @@ ASTLoweringItem::visit (AST::InherentImpl &impl_block) if (t.has_type ()) { - // see https://github.com/rust-lang/rust/issues/36887 - rust_error_at ( + rich_location rich_locus (line_table, t.get_locus ()); + rich_locus.add_fixit_replace ( t.get_locus (), - "defaults for type parameters are not allowed here"); + "for more information, see issue #36887 " + ""); + rust_error_at (rich_locus, + "defaults for type parameters are only " + "allowed in %, %, %, " + "or % definitions"); } } break; @@ -645,10 +650,15 @@ ASTLoweringItem::visit (AST::TraitImpl &impl_block) if (t.has_type ()) { - // see https://github.com/rust-lang/rust/issues/36887 - rust_error_at ( - t.get_locus (), - "defaults for type parameters are not allowed here"); + rich_location rich_locus (line_table, t.get_locus ()); + rich_locus.add_fixit_replace ( + t.get_locus (), "for more information, see issue #36887 " + ""); + rust_error_at (rich_locus, + "defaults for type parameters are only " + "allowed in %, %, %, " + "or % definitions"); } } break; diff --git a/gcc/testsuite/rust/compile/generics10.rs b/gcc/testsuite/rust/compile/generics10.rs index a734fa8a1978..c66a08f7e169 100644 --- a/gcc/testsuite/rust/compile/generics10.rs +++ b/gcc/testsuite/rust/compile/generics10.rs @@ -1,6 +1,6 @@ struct Foo(A, B); -impl Foo { // { dg-error "defaults for type parameters are not allowed here" } +impl Foo { // { dg-error "defaults for type parameters are only allowed in .struct., .enum., .type., or .trait. definitions" } fn new(a: X, b: f32) -> Self { Self(a, b) }