From: Owen Avery Date: Tue, 18 Apr 2023 04:46:59 +0000 (-0400) Subject: gccrs: Fix infinite loop with parsing invalid generic parameters X-Git-Tag: basepoints/gcc-15~2599 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=582accedb77b7b957e1322966a0875491156d13a;p=thirdparty%2Fgcc.git gccrs: Fix infinite loop with parsing invalid generic parameters gcc/rust/ChangeLog: * parse/rust-parse-impl.h (Parser::parse_generic_params): Handle parameter parsing error. gcc/testsuite/ChangeLog: * rust/compile/issue-2125.rs: New test. Signed-off-by: Owen Avery --- diff --git a/gcc/rust/parse/rust-parse-impl.h b/gcc/rust/parse/rust-parse-impl.h index 0fb96dcfb516..042018de9a22 100644 --- a/gcc/rust/parse/rust-parse-impl.h +++ b/gcc/rust/parse/rust-parse-impl.h @@ -3127,6 +3127,8 @@ Parser::parse_generic_params (EndTokenPred is_end_token) generic_params.emplace_back (std::move (param)); maybe_skip_token (COMMA); } + else + break; } // FIXME: Add reordering hint diff --git a/gcc/testsuite/rust/compile/issue-2125.rs b/gcc/testsuite/rust/compile/issue-2125.rs new file mode 100644 index 000000000000..cbcf4cb133f7 --- /dev/null +++ b/gcc/testsuite/rust/compile/issue-2125.rs @@ -0,0 +1,2 @@ +// { dg-timeout 5 } +struct S<$>; // { dg-error ".*" }