aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust/expand/rust-macro-expand.cc
diff options
context:
space:
mode:
authorArthur Cohen <arthur.cohen@embecosm.com>2022-08-29 16:23:51 +0200
committerArthur Cohen <arthur.cohen@embecosm.com>2023-01-31 14:16:50 +0100
commit252216dd0c5956dfb931031fd1f8dfa59c922160 (patch)
treef1732eea171fa82655fb94d4e2c3a39361608443 /gcc/rust/expand/rust-macro-expand.cc
parent1fed030c16519c0ebedb4cf0c6cebaa9ffa32e66 (diff)
downloadgcc-252216dd0c5956dfb931031fd1f8dfa59c922160.zip
gcc-252216dd0c5956dfb931031fd1f8dfa59c922160.tar.gz
gcc-252216dd0c5956dfb931031fd1f8dfa59c922160.tar.bz2
gccrs: transcriber: Do not infinite loop if the current parsed node is an error
gcc/rust/ChangeLog: * expand/rust-macro-expand.cc (parse_many): Return early from parsing loop if we encounter an error, and emit that error in the meantime. Co-authored-by: philberty <philip.herron@embecosm.com>
Diffstat (limited to 'gcc/rust/expand/rust-macro-expand.cc')
-rw-r--r--gcc/rust/expand/rust-macro-expand.cc8
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/rust/expand/rust-macro-expand.cc b/gcc/rust/expand/rust-macro-expand.cc
index df258bd..ed1b838 100644
--- a/gcc/rust/expand/rust-macro-expand.cc
+++ b/gcc/rust/expand/rust-macro-expand.cc
@@ -731,6 +731,14 @@ parse_many (Parser<MacroInvocLexer> &parser, TokenId &delimiter,
break;
auto node = parse_fn ();
+ if (node.is_error ())
+ {
+ for (auto err : parser.get_errors ())
+ err.emit_error ();
+
+ return AST::ASTFragment::create_error ();
+ }
+
nodes.emplace_back (std::move (node));
}