[llvm-branch-commits] [clang] [HLSL][RootSignature] Allow for multiple parsing errors in `RootSignatureParser` (PR #147832)
Finn Plummer via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Fri Jul 11 16:49:44 PDT 2025
================
@@ -27,51 +36,68 @@ RootSignatureParser::RootSignatureParser(
bool RootSignatureParser::parse() {
// Iterate as many RootSignatureElements as possible, until we hit the
// end of the stream
+ bool HadError = false;
while (!peekExpectedToken(TokenKind::end_of_stream)) {
+ bool HadLocalError = false;
if (tryConsumeExpectedToken(TokenKind::kw_RootFlags)) {
SourceLocation ElementLoc = getTokenLocation(CurToken);
auto Flags = parseRootFlags();
- if (!Flags.has_value())
- return true;
- Elements.emplace_back(RootSignatureElement(ElementLoc, *Flags));
+ if (Flags.has_value())
+ Elements.emplace_back(RootSignatureElement(ElementLoc, *Flags));
+ else
+ HadLocalError = true;
} else if (tryConsumeExpectedToken(TokenKind::kw_RootConstants)) {
SourceLocation ElementLoc = getTokenLocation(CurToken);
auto Constants = parseRootConstants();
- if (!Constants.has_value())
- return true;
- Elements.emplace_back(RootSignatureElement(ElementLoc, *Constants));
+ if (Constants.has_value())
+ Elements.emplace_back(RootSignatureElement(ElementLoc, *Constants));
+ else
+ HadLocalError = true;
----------------
inbelic wrote:
I won't apply it here, but I will keep that in mind for the aforementioned clean-up pr
https://github.com/llvm/llvm-project/pull/147832
More information about the llvm-branch-commits
mailing list