Skip to content

Commit 5efadf0

Browse files
committed
add extra default visibility testcase
- also catches a small error for no clauses edge case
1 parent 58ef8ad commit 5efadf0

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

clang/lib/Parse/ParseHLSLRootSignature.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ bool RootSignatureParser::ParseDescriptorTable() {
219219
HasComma = !TryConsumeExpectedToken(TokenKind::pu_comma);
220220
}
221221

222-
if (HasComma)
222+
if (HasComma && Table.NumClauses != 0)
223223
return ReportError(); // report 'comma' denotes a required extra item
224224

225225
if (ConsumeExpectedToken(TokenKind::pu_r_paren))

clang/unittests/Parse/ParseHLSLRootSignatureTest.cpp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,8 @@ TEST_F(ParseHLSLRootSignatureTest, ParseValidDTClausesTest) {
142142
| Descriptors_Static_Keeping_Buffer_Bounds_Checks
143143
),
144144
visibility = Shader_Visibility_Pixel
145-
)
145+
),
146+
DescriptorTable()
146147
)cc";
147148

148149
TrivialModuleLoader ModLoader;
@@ -158,7 +159,7 @@ TEST_F(ParseHLSLRootSignatureTest, ParseValidDTClausesTest) {
158159
RootSignatureParser Parser(Elements, Tokens);
159160

160161
ASSERT_FALSE(Parser.Parse());
161-
ASSERT_EQ((int)Elements.size(), 5);
162+
ASSERT_EQ((int)Elements.size(), 6);
162163

163164
// Test default values are set correctly
164165
RootElement Elem = Elements[0];
@@ -212,6 +213,12 @@ TEST_F(ParseHLSLRootSignatureTest, ParseValidDTClausesTest) {
212213
ASSERT_EQ(Elem.Table.NumClauses, (uint32_t)4);
213214
ASSERT_EQ(Elem.Table.Visibility, ShaderVisibility::Pixel);
214215

216+
// Test generated DescriptorTable start has correct default values
217+
Elem = Elements[5];
218+
ASSERT_EQ(Elem.Tag, RootElement::ElementType::DescriptorTable);
219+
ASSERT_EQ(Elem.Table.NumClauses, (uint32_t)0);
220+
ASSERT_EQ(Elem.Table.Visibility, ShaderVisibility::All);
221+
215222
delete PP;
216223
}
217224

0 commit comments

Comments
 (0)