From 582accedb77b7b957e1322966a0875491156d13a Mon Sep 17 00:00:00 2001 From: Owen Avery Date: Tue, 18 Apr 2023 00:46:59 -0400 Subject: 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 --- gcc/rust/parse/rust-parse-impl.h | 2 ++ gcc/testsuite/rust/compile/issue-2125.rs | 2 ++ 2 files changed, 4 insertions(+) create mode 100644 gcc/testsuite/rust/compile/issue-2125.rs (limited to 'gcc') diff --git a/gcc/rust/parse/rust-parse-impl.h b/gcc/rust/parse/rust-parse-impl.h index 0fb96dc..042018d 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 0000000..cbcf4cb --- /dev/null +++ b/gcc/testsuite/rust/compile/issue-2125.rs @@ -0,0 +1,2 @@ +// { dg-timeout 5 } +struct S<$>; // { dg-error ".*" } -- cgit v1.1