@@ -555,7 +555,7 @@ RootSignatureParser::parseRootDescriptorParams(TokenKind DescKind,
555
555
if (consumeExpectedToken (TokenKind::pu_equal))
556
556
return std::nullopt;
557
557
558
- auto Flags = parseRootDescriptorFlags ();
558
+ auto Flags = parseRootDescriptorFlags (TokenKind::kw_flags );
559
559
if (!Flags.has_value ())
560
560
return std::nullopt;
561
561
Params.Flags = Flags;
@@ -656,7 +656,7 @@ RootSignatureParser::parseDescriptorTableClauseParams(TokenKind ClauseKind,
656
656
if (consumeExpectedToken (TokenKind::pu_equal))
657
657
return std::nullopt;
658
658
659
- auto Flags = parseDescriptorRangeFlags ();
659
+ auto Flags = parseDescriptorRangeFlags (TokenKind::kw_flags );
660
660
if (!Flags.has_value ())
661
661
return std::nullopt;
662
662
Params.Flags = Flags;
@@ -1102,7 +1102,7 @@ RootSignatureParser::parseStaticBorderColor(TokenKind Context) {
1102
1102
}
1103
1103
1104
1104
std::optional<llvm::dxbc::RootDescriptorFlags>
1105
- RootSignatureParser::parseRootDescriptorFlags () {
1105
+ RootSignatureParser::parseRootDescriptorFlags (TokenKind Context ) {
1106
1106
assert (CurToken.TokKind == TokenKind::pu_equal &&
1107
1107
" Expects to only be invoked starting at given keyword" );
1108
1108
@@ -1134,14 +1134,19 @@ RootSignatureParser::parseRootDescriptorFlags() {
1134
1134
default :
1135
1135
llvm_unreachable (" Switch for consumed enum token was not provided" );
1136
1136
}
1137
+ } else {
1138
+ consumeNextToken (); // consume token to point at invalid token
1139
+ reportDiag (diag::err_hlsl_invalid_token)
1140
+ << /* value=*/ 1 << /* value of*/ Context;
1141
+ return std::nullopt;
1137
1142
}
1138
1143
} while (tryConsumeExpectedToken (TokenKind::pu_or));
1139
1144
1140
1145
return Flags;
1141
1146
}
1142
1147
1143
1148
std::optional<llvm::dxbc::DescriptorRangeFlags>
1144
- RootSignatureParser::parseDescriptorRangeFlags () {
1149
+ RootSignatureParser::parseDescriptorRangeFlags (TokenKind Context ) {
1145
1150
assert (CurToken.TokKind == TokenKind::pu_equal &&
1146
1151
" Expects to only be invoked starting at given keyword" );
1147
1152
@@ -1173,6 +1178,11 @@ RootSignatureParser::parseDescriptorRangeFlags() {
1173
1178
default :
1174
1179
llvm_unreachable (" Switch for consumed enum token was not provided" );
1175
1180
}
1181
+ } else {
1182
+ consumeNextToken (); // consume token to point at invalid token
1183
+ reportDiag (diag::err_hlsl_invalid_token)
1184
+ << /* value=*/ 1 << /* value of*/ Context;
1185
+ return std::nullopt;
1176
1186
}
1177
1187
} while (tryConsumeExpectedToken (TokenKind::pu_or));
1178
1188
0 commit comments