diff options
author | Arthur Cohen <arthur.cohen@embecosm.com> | 2022-08-29 16:23:51 +0200 |
---|---|---|
committer | Arthur Cohen <arthur.cohen@embecosm.com> | 2023-01-31 14:16:50 +0100 |
commit | 252216dd0c5956dfb931031fd1f8dfa59c922160 (patch) | |
tree | f1732eea171fa82655fb94d4e2c3a39361608443 /gcc | |
parent | 1fed030c16519c0ebedb4cf0c6cebaa9ffa32e66 (diff) | |
download | gcc-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')
-rw-r--r-- | gcc/rust/expand/rust-macro-expand.cc | 8 |
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)); } |