Skip to content

Commit ab390a2

Browse files
committed
add extra default visibility testcase
- also catches a small error for no clauses edge case
1 parent d5b19cb commit ab390a2

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
@@ -218,7 +218,7 @@ bool RootSignatureParser::ParseDescriptorTable() {
218218
HasComma = !TryConsumeExpectedToken(TokenKind::pu_comma);
219219
}
220220

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

224224
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
@@ -139,7 +139,8 @@ TEST_F(ParseHLSLRootSignatureTest, ParseValidDTClausesTest) {
139139
| Descriptors_Static_Keeping_Buffer_Bounds_Checks
140140
),
141141
visibility = Shader_Visibility_Pixel
142-
)
142+
),
143+
DescriptorTable()
143144
)cc";
144145

145146
TrivialModuleLoader ModLoader;
@@ -155,7 +156,7 @@ TEST_F(ParseHLSLRootSignatureTest, ParseValidDTClausesTest) {
155156
RootSignatureParser Parser(Elements, Tokens);
156157

157158
ASSERT_FALSE(Parser.Parse());
158-
ASSERT_EQ((int)Elements.size(), 5);
159+
ASSERT_EQ((int)Elements.size(), 6);
159160

160161
// Test default values are set correctly
161162
RootElement Elem = Elements[0];
@@ -209,6 +210,12 @@ TEST_F(ParseHLSLRootSignatureTest, ParseValidDTClausesTest) {
209210
ASSERT_EQ(Elem.Table.NumClauses, (uint32_t)4);
210211
ASSERT_EQ(Elem.Table.Visibility, ShaderVisibility::Pixel);
211212

213+
// Test generated DescriptorTable start has correct default values
214+
Elem = Elements[5];
215+
ASSERT_EQ(Elem.Tag, RootElement::ElementType::DescriptorTable);
216+
ASSERT_EQ(Elem.Table.NumClauses, (uint32_t)0);
217+
ASSERT_EQ(Elem.Table.Visibility, ShaderVisibility::All);
218+
212219
delete PP;
213220
}
214221

0 commit comments

Comments
 (0)