From: Pierre-Emmanuel Patry Date: Wed, 28 Jun 2023 12:42:18 +0000 (+0200) Subject: gccrs: collector: Fix missing trait generics X-Git-Tag: basepoints/gcc-15~2385 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=85201f34877639599c6f53575791d9a6ef66a02b;p=thirdparty%2Fgcc.git gccrs: collector: Fix missing trait generics Generics on the target structure did not correctly output. gcc/rust/ChangeLog: * ast/rust-ast-collector.cc (TokenCollector::visit): Fix generic output. gcc/testsuite/ChangeLog: * rust/link/trait_import_0.rs: Mark test as xfail. Signed-off-by: Pierre-Emmanuel Patry --- diff --git a/gcc/rust/ast/rust-ast-collector.cc b/gcc/rust/ast/rust-ast-collector.cc index ffd5311caa16..84ebcad749ae 100644 --- a/gcc/rust/ast/rust-ast-collector.cc +++ b/gcc/rust/ast/rust-ast-collector.cc @@ -2117,14 +2117,7 @@ TokenCollector::visit (Trait &trait) push (Rust::Token::make (TRAIT, trait.get_locus ())); push (Rust::Token::make_identifier (Location (), std::move (id))); - // Traits actually have an implicit Self thrown at the start, so we must - // expect the number of generic params to be > 1 - if (trait.get_generic_params ().size () > 1) - { - push (Rust::Token::make (LEFT_ANGLE, Location ())); - visit_items_joined_by_separator (trait.get_generic_params (), COMMA, 1); - push (Rust::Token::make (RIGHT_ANGLE, Location ())); - } + visit (trait.get_generic_params ()); visit_items_as_block (trait.get_trait_items (), {}); } diff --git a/gcc/testsuite/rust/link/trait_import_0.rs b/gcc/testsuite/rust/link/trait_import_0.rs index ac8c5811d22b..1b8c90a35742 100644 --- a/gcc/testsuite/rust/link/trait_import_0.rs +++ b/gcc/testsuite/rust/link/trait_import_0.rs @@ -1,3 +1,6 @@ +// { dg-xfail-if "https://github.com/Rust-GCC/gccrs/issues/2349" { *-*-* } } +// { dg-excess-errors "" { xfail *-*-* } } + extern crate trait_import_1; use trait_import_1::Add;