From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 7905) id 2C4E03858C66; Tue, 31 Jan 2023 13:14:57 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 2C4E03858C66 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1675170897; bh=iDYKfC4x78xF4ndqgeVXA4huEHtDNMGQVBd6ydIUS4s=; h=From:To:Subject:Date:From; b=F/uKiRT0yMfdPkZ4Q1sDFDlYz/4UIvSu+DOSmCkC0VtKjd4N1RCfxZZnx2ztHpkEJ uU9PpB+BLmrmxHd4rjcWIzS4EWTdQwFNmxLOsK6uclrl8/gybcwK1L5IqQiKbauHqr fMRiX6zElmao/swpWzWVUi1FTwqVZxsB8WIFqeG4= MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Arthur Cohen To: gcc-cvs@gcc.gnu.org Subject: [gcc r13-5542] gccrs: transcriber: Do not infinite loop if the current parsed node is an error X-Act-Checkin: gcc X-Git-Author: Arthur Cohen X-Git-Refname: refs/heads/master X-Git-Oldrev: 1fed030c16519c0ebedb4cf0c6cebaa9ffa32e66 X-Git-Newrev: 252216dd0c5956dfb931031fd1f8dfa59c922160 Message-Id: <20230131131457.2C4E03858C66@sourceware.org> Date: Tue, 31 Jan 2023 13:14:57 +0000 (GMT) List-Id: https://gcc.gnu.org/g:252216dd0c5956dfb931031fd1f8dfa59c922160 commit r13-5542-g252216dd0c5956dfb931031fd1f8dfa59c922160 Author: Arthur Cohen Date: Mon Aug 29 16:23:51 2022 +0200 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 Diff: --- gcc/rust/expand/rust-macro-expand.cc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/gcc/rust/expand/rust-macro-expand.cc b/gcc/rust/expand/rust-macro-expand.cc index df258bd96ec..ed1b838c987 100644 --- a/gcc/rust/expand/rust-macro-expand.cc +++ b/gcc/rust/expand/rust-macro-expand.cc @@ -731,6 +731,14 @@ parse_many (Parser &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)); }