Skip to content

Commit 6d48044

Browse files
committed
improve err_expected to err_expected_either at end of params
1 parent 8187a65 commit 6d48044

File tree

3 files changed

+23
-16
lines changed

3 files changed

+23
-16
lines changed

clang/lib/Parse/ParseHLSLRootSignature.cpp

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,8 @@ bool RootSignatureParser::parse() {
7171
break;
7272
}
7373

74-
return consumeExpectedToken(TokenKind::end_of_stream);
74+
return consumeExpectedToken(TokenKind::end_of_stream,
75+
diag::err_expected_either, TokenKind::pu_comma);
7576
}
7677

7778
template <typename FlagType>
@@ -131,7 +132,8 @@ std::optional<llvm::dxbc::RootFlags> RootSignatureParser::parseRootFlags() {
131132
} while (tryConsumeExpectedToken(TokenKind::pu_or));
132133
}
133134

134-
if (consumeExpectedToken(TokenKind::pu_r_paren))
135+
if (consumeExpectedToken(TokenKind::pu_r_paren, diag::err_expected_either,
136+
TokenKind::pu_comma))
135137
return std::nullopt;
136138

137139
return Flags;
@@ -151,7 +153,8 @@ std::optional<RootConstants> RootSignatureParser::parseRootConstants() {
151153
if (!Params.has_value())
152154
return std::nullopt;
153155

154-
if (consumeExpectedToken(TokenKind::pu_r_paren))
156+
if (consumeExpectedToken(TokenKind::pu_r_paren, diag::err_expected_either,
157+
TokenKind::pu_comma))
155158
return std::nullopt;
156159

157160
// Check mandatory parameters where provided
@@ -216,7 +219,8 @@ std::optional<RootDescriptor> RootSignatureParser::parseRootDescriptor() {
216219
if (!Params.has_value())
217220
return std::nullopt;
218221

219-
if (consumeExpectedToken(TokenKind::pu_r_paren))
222+
if (consumeExpectedToken(TokenKind::pu_r_paren, diag::err_expected_either,
223+
TokenKind::pu_comma))
220224
return std::nullopt;
221225

222226
// Check mandatory parameters were provided
@@ -287,7 +291,8 @@ std::optional<DescriptorTable> RootSignatureParser::parseDescriptorTable() {
287291
break;
288292
}
289293

290-
if (consumeExpectedToken(TokenKind::pu_r_paren))
294+
if (consumeExpectedToken(TokenKind::pu_r_paren, diag::err_expected_either,
295+
TokenKind::pu_comma))
291296
return std::nullopt;
292297

293298
// Fill in optional visibility
@@ -339,7 +344,8 @@ RootSignatureParser::parseDescriptorTableClause() {
339344
if (!Params.has_value())
340345
return std::nullopt;
341346

342-
if (consumeExpectedToken(TokenKind::pu_r_paren))
347+
if (consumeExpectedToken(TokenKind::pu_r_paren, diag::err_expected_either,
348+
TokenKind::pu_comma))
343349
return std::nullopt;
344350

345351
// Check mandatory parameters were provided
@@ -380,7 +386,8 @@ std::optional<StaticSampler> RootSignatureParser::parseStaticSampler() {
380386
if (!Params.has_value())
381387
return std::nullopt;
382388

383-
if (consumeExpectedToken(TokenKind::pu_r_paren))
389+
if (consumeExpectedToken(TokenKind::pu_r_paren, diag::err_expected_either,
390+
TokenKind::pu_comma))
384391
return std::nullopt;
385392

386393
// Check mandatory parameters were provided

clang/test/SemaHLSL/RootSignature-err.hlsl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ void bad_root_signature_3() {}
2121
[RootSignature("DescriptorTable(), invalid")]
2222
void bad_root_signature_4() {}
2323

24-
// expected-error@+1 {{expected ')'}}
24+
// expected-error@+1 {{expected ')' or ','}}
2525
[RootSignature("RootConstants(b0 num32BitConstants = 1)")]
2626
void bad_root_signature_5() {}
2727

@@ -36,7 +36,7 @@ void bad_root_signature_5() {}
3636
[RootSignature(MultiLineRootSignature)]
3737
void bad_root_signature_6() {}
3838

39-
// expected-error@+1 {{expected end of stream}}
39+
// expected-error@+1 {{expected end of stream or ','}}
4040
[RootSignature("RootFlags() RootConstants(b0, num32BitConstants = 1))")]
4141
void bad_root_signature_7() {}
4242

clang/unittests/Parse/ParseHLSLRootSignatureTest.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -843,7 +843,7 @@ TEST_F(ParseHLSLRootSignatureTest, InvalidParseUnexpectedTokenTest) {
843843
Signature, *PP);
844844

845845
// Test correct diagnostic produced
846-
Consumer->setExpected(diag::err_expected);
846+
Consumer->setExpected(diag::err_expected_either);
847847
ASSERT_TRUE(Parser.parse());
848848

849849
ASSERT_TRUE(Consumer->isSatisfied());
@@ -1258,7 +1258,7 @@ TEST_F(ParseHLSLRootSignatureTest, InvalidRootElementMissingCommaTest) {
12581258
Signature, *PP);
12591259

12601260
// Test correct diagnostic produced
1261-
Consumer->setExpected(diag::err_expected);
1261+
Consumer->setExpected(diag::err_expected_either);
12621262
ASSERT_TRUE(Parser.parse());
12631263

12641264
ASSERT_TRUE(Consumer->isSatisfied());
@@ -1285,7 +1285,7 @@ TEST_F(ParseHLSLRootSignatureTest, InvalidDescriptorTableMissingCommaTest) {
12851285
Signature, *PP);
12861286

12871287
// Test correct diagnostic produced
1288-
Consumer->setExpected(diag::err_expected);
1288+
Consumer->setExpected(diag::err_expected_either);
12891289
ASSERT_TRUE(Parser.parse());
12901290

12911291
ASSERT_TRUE(Consumer->isSatisfied());
@@ -1312,7 +1312,7 @@ TEST_F(ParseHLSLRootSignatureTest, InvalidRootConstantParamsCommaTest) {
13121312
Signature, *PP);
13131313

13141314
// Test correct diagnostic produced
1315-
Consumer->setExpected(diag::err_expected);
1315+
Consumer->setExpected(diag::err_expected_either);
13161316
ASSERT_TRUE(Parser.parse());
13171317

13181318
ASSERT_TRUE(Consumer->isSatisfied());
@@ -1339,7 +1339,7 @@ TEST_F(ParseHLSLRootSignatureTest, InvalidRootDescriptorParamsCommaTest) {
13391339
Signature, *PP);
13401340

13411341
// Test correct diagnostic produced
1342-
Consumer->setExpected(diag::err_expected);
1342+
Consumer->setExpected(diag::err_expected_either);
13431343
ASSERT_TRUE(Parser.parse());
13441344

13451345
ASSERT_TRUE(Consumer->isSatisfied());
@@ -1368,7 +1368,7 @@ TEST_F(ParseHLSLRootSignatureTest, InvalidDescriptorClauseParamsCommaTest) {
13681368
Signature, *PP);
13691369

13701370
// Test correct diagnostic produced
1371-
Consumer->setExpected(diag::err_expected);
1371+
Consumer->setExpected(diag::err_expected_either);
13721372
ASSERT_TRUE(Parser.parse());
13731373

13741374
ASSERT_TRUE(Consumer->isSatisfied());
@@ -1395,7 +1395,7 @@ TEST_F(ParseHLSLRootSignatureTest, InvalidStaticSamplerCommaTest) {
13951395
Signature, *PP);
13961396

13971397
// Test correct diagnostic produced
1398-
Consumer->setExpected(diag::err_expected);
1398+
Consumer->setExpected(diag::err_expected_either);
13991399
ASSERT_TRUE(Parser.parse());
14001400

14011401
ASSERT_TRUE(Consumer->isSatisfied());

0 commit comments

Comments
 (0)