mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-20 10:25:28 +00:00
tint: Have ast::DiagnosticControl use ast::Identifier
Instead of ast::IdentifierExpression. The name is not an expression. Fixed: tint:1257 Change-Id: I3161d20f584bfedf730b9257233f9dfcb064298a Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/118344 Reviewed-by: James Price <jrprice@google.com> Kokoro: Kokoro <noreply+kokoro@google.com> Commit-Queue: Ben Clayton <bclayton@google.com> Reviewed-by: Dan Sinclair <dsinclair@chromium.org> Kokoro: Ben Clayton <bclayton@google.com>
This commit is contained in:
committed by
Dawn LUCI CQ
parent
f031ca2d44
commit
12914eedf6
@@ -98,7 +98,7 @@ static utils::Vector<const ast::Attribute*, 2> createAttributes(const Source& so
|
||||
return {builder.Builtin(source, ast::BuiltinValue::kPosition)};
|
||||
case AttributeKind::kDiagnostic:
|
||||
return {builder.DiagnosticAttribute(source, ast::DiagnosticSeverity::kInfo,
|
||||
builder.Expr("chromium_unreachable_code"))};
|
||||
"chromium_unreachable_code")};
|
||||
case AttributeKind::kGroup:
|
||||
return {builder.Group(source, 1_a)};
|
||||
case AttributeKind::kId:
|
||||
|
||||
@@ -1097,7 +1097,7 @@ TEST_F(ResolverDependencyGraphOrderedGlobalsTest, DirectiveFirst) {
|
||||
auto* var_1 = GlobalVar("SYMBOL1", ty.i32());
|
||||
auto* enable = Enable(ast::Extension::kF16);
|
||||
auto* var_2 = GlobalVar("SYMBOL2", ty.f32());
|
||||
auto* diagnostic = DiagnosticControl(ast::DiagnosticSeverity::kWarning, Expr("foo"));
|
||||
auto* diagnostic = DiagnosticControl(ast::DiagnosticSeverity::kWarning, "foo");
|
||||
AST().AddDiagnosticControl(diagnostic);
|
||||
|
||||
EXPECT_THAT(AST().GlobalDeclarations(), ElementsAre(var_1, enable, var_2, diagnostic));
|
||||
|
||||
@@ -32,7 +32,7 @@ TEST_F(ResolverDiagnosticControlTest, UnreachableCode_DefaultSeverity) {
|
||||
}
|
||||
|
||||
TEST_F(ResolverDiagnosticControlTest, UnreachableCode_ErrorViaDirective) {
|
||||
DiagnosticDirective(ast::DiagnosticSeverity::kError, Expr("chromium_unreachable_code"));
|
||||
DiagnosticDirective(ast::DiagnosticSeverity::kError, "chromium_unreachable_code");
|
||||
|
||||
auto stmts = utils::Vector{Return(), Return()};
|
||||
Func("foo", {}, ty.void_(), stmts);
|
||||
@@ -42,7 +42,7 @@ TEST_F(ResolverDiagnosticControlTest, UnreachableCode_ErrorViaDirective) {
|
||||
}
|
||||
|
||||
TEST_F(ResolverDiagnosticControlTest, UnreachableCode_WarningViaDirective) {
|
||||
DiagnosticDirective(ast::DiagnosticSeverity::kWarning, Expr("chromium_unreachable_code"));
|
||||
DiagnosticDirective(ast::DiagnosticSeverity::kWarning, "chromium_unreachable_code");
|
||||
|
||||
auto stmts = utils::Vector{Return(), Return()};
|
||||
Func("foo", {}, ty.void_(), stmts);
|
||||
@@ -52,7 +52,7 @@ TEST_F(ResolverDiagnosticControlTest, UnreachableCode_WarningViaDirective) {
|
||||
}
|
||||
|
||||
TEST_F(ResolverDiagnosticControlTest, UnreachableCode_InfoViaDirective) {
|
||||
DiagnosticDirective(ast::DiagnosticSeverity::kInfo, Expr("chromium_unreachable_code"));
|
||||
DiagnosticDirective(ast::DiagnosticSeverity::kInfo, "chromium_unreachable_code");
|
||||
|
||||
auto stmts = utils::Vector{Return(), Return()};
|
||||
Func("foo", {}, ty.void_(), stmts);
|
||||
@@ -62,7 +62,7 @@ TEST_F(ResolverDiagnosticControlTest, UnreachableCode_InfoViaDirective) {
|
||||
}
|
||||
|
||||
TEST_F(ResolverDiagnosticControlTest, UnreachableCode_OffViaDirective) {
|
||||
DiagnosticDirective(ast::DiagnosticSeverity::kOff, Expr("chromium_unreachable_code"));
|
||||
DiagnosticDirective(ast::DiagnosticSeverity::kOff, "chromium_unreachable_code");
|
||||
|
||||
auto stmts = utils::Vector{Return(), Return()};
|
||||
Func("foo", {}, ty.void_(), stmts);
|
||||
@@ -72,8 +72,7 @@ TEST_F(ResolverDiagnosticControlTest, UnreachableCode_OffViaDirective) {
|
||||
}
|
||||
|
||||
TEST_F(ResolverDiagnosticControlTest, UnreachableCode_ErrorViaAttribute) {
|
||||
auto* attr =
|
||||
DiagnosticAttribute(ast::DiagnosticSeverity::kError, Expr("chromium_unreachable_code"));
|
||||
auto* attr = DiagnosticAttribute(ast::DiagnosticSeverity::kError, "chromium_unreachable_code");
|
||||
|
||||
auto stmts = utils::Vector{Return(), Return()};
|
||||
Func("foo", {}, ty.void_(), stmts, utils::Vector{attr});
|
||||
@@ -84,7 +83,7 @@ TEST_F(ResolverDiagnosticControlTest, UnreachableCode_ErrorViaAttribute) {
|
||||
|
||||
TEST_F(ResolverDiagnosticControlTest, UnreachableCode_WarningViaAttribute) {
|
||||
auto* attr =
|
||||
DiagnosticAttribute(ast::DiagnosticSeverity::kWarning, Expr("chromium_unreachable_code"));
|
||||
DiagnosticAttribute(ast::DiagnosticSeverity::kWarning, "chromium_unreachable_code");
|
||||
|
||||
auto stmts = utils::Vector{Return(), Return()};
|
||||
Func("foo", {}, ty.void_(), stmts, utils::Vector{attr});
|
||||
@@ -94,8 +93,7 @@ TEST_F(ResolverDiagnosticControlTest, UnreachableCode_WarningViaAttribute) {
|
||||
}
|
||||
|
||||
TEST_F(ResolverDiagnosticControlTest, UnreachableCode_InfoViaAttribute) {
|
||||
auto* attr =
|
||||
DiagnosticAttribute(ast::DiagnosticSeverity::kInfo, Expr("chromium_unreachable_code"));
|
||||
auto* attr = DiagnosticAttribute(ast::DiagnosticSeverity::kInfo, "chromium_unreachable_code");
|
||||
|
||||
auto stmts = utils::Vector{Return(), Return()};
|
||||
Func("foo", {}, ty.void_(), stmts, utils::Vector{attr});
|
||||
@@ -105,8 +103,7 @@ TEST_F(ResolverDiagnosticControlTest, UnreachableCode_InfoViaAttribute) {
|
||||
}
|
||||
|
||||
TEST_F(ResolverDiagnosticControlTest, UnreachableCode_OffViaAttribute) {
|
||||
auto* attr =
|
||||
DiagnosticAttribute(ast::DiagnosticSeverity::kOff, Expr("chromium_unreachable_code"));
|
||||
auto* attr = DiagnosticAttribute(ast::DiagnosticSeverity::kOff, "chromium_unreachable_code");
|
||||
|
||||
auto stmts = utils::Vector{Return(), Return()};
|
||||
Func("foo", {}, ty.void_(), stmts, utils::Vector{attr});
|
||||
@@ -122,9 +119,9 @@ TEST_F(ResolverDiagnosticControlTest, UnreachableCode_ErrorViaDirective_Overridd
|
||||
// return;
|
||||
// return; // Should produce a warning
|
||||
// }
|
||||
DiagnosticDirective(ast::DiagnosticSeverity::kError, Expr("chromium_unreachable_code"));
|
||||
DiagnosticDirective(ast::DiagnosticSeverity::kError, "chromium_unreachable_code");
|
||||
auto* attr =
|
||||
DiagnosticAttribute(ast::DiagnosticSeverity::kWarning, Expr("chromium_unreachable_code"));
|
||||
DiagnosticAttribute(ast::DiagnosticSeverity::kWarning, "chromium_unreachable_code");
|
||||
|
||||
auto stmts = utils::Vector{Return(), Return()};
|
||||
Func("foo", {}, ty.void_(), stmts, utils::Vector{attr});
|
||||
@@ -150,7 +147,7 @@ TEST_F(ResolverDiagnosticControlTest, FunctionAttributeScope) {
|
||||
// }
|
||||
{
|
||||
auto* attr =
|
||||
DiagnosticAttribute(ast::DiagnosticSeverity::kOff, Expr("chromium_unreachable_code"));
|
||||
DiagnosticAttribute(ast::DiagnosticSeverity::kOff, "chromium_unreachable_code");
|
||||
Func("foo", {}, ty.void_(),
|
||||
utils::Vector{
|
||||
Return(),
|
||||
@@ -167,7 +164,7 @@ TEST_F(ResolverDiagnosticControlTest, FunctionAttributeScope) {
|
||||
}
|
||||
{
|
||||
auto* attr =
|
||||
DiagnosticAttribute(ast::DiagnosticSeverity::kInfo, Expr("chromium_unreachable_code"));
|
||||
DiagnosticAttribute(ast::DiagnosticSeverity::kInfo, "chromium_unreachable_code");
|
||||
Func("zoo", {}, ty.void_(),
|
||||
utils::Vector{
|
||||
Return(),
|
||||
@@ -203,7 +200,7 @@ TEST_F(ResolverDiagnosticControlTest, BlockAttributeScope) {
|
||||
// }
|
||||
|
||||
auto attr = [&](auto severity) {
|
||||
return utils::Vector{DiagnosticAttribute(severity, Expr("chromium_unreachable_code"))};
|
||||
return utils::Vector{DiagnosticAttribute(severity, "chromium_unreachable_code")};
|
||||
};
|
||||
Func("foo", {}, ty.void_(),
|
||||
utils::Vector{
|
||||
@@ -243,7 +240,7 @@ TEST_F(ResolverDiagnosticControlTest, BlockAttributeScope) {
|
||||
|
||||
TEST_F(ResolverDiagnosticControlTest, UnrecognizedRuleName_Directive) {
|
||||
DiagnosticDirective(ast::DiagnosticSeverity::kError,
|
||||
Expr(Source{{12, 34}}, "chromium_unreachable_cod"));
|
||||
Ident(Source{{12, 34}}, "chromium_unreachable_cod"));
|
||||
EXPECT_TRUE(r()->Resolve()) << r()->error();
|
||||
EXPECT_EQ(r()->error(),
|
||||
R"(12:34 warning: unrecognized diagnostic rule 'chromium_unreachable_cod'
|
||||
@@ -253,7 +250,7 @@ Possible values: 'chromium_unreachable_code', 'derivative_uniformity')");
|
||||
|
||||
TEST_F(ResolverDiagnosticControlTest, UnrecognizedRuleName_Attribute) {
|
||||
auto* attr = DiagnosticAttribute(ast::DiagnosticSeverity::kError,
|
||||
Expr(Source{{12, 34}}, "chromium_unreachable_cod"));
|
||||
Ident(Source{{12, 34}}, "chromium_unreachable_cod"));
|
||||
Func("foo", {}, ty.void_(), {}, utils::Vector{attr});
|
||||
EXPECT_TRUE(r()->Resolve()) << r()->error();
|
||||
EXPECT_EQ(r()->error(),
|
||||
@@ -264,17 +261,17 @@ Possible values: 'chromium_unreachable_code', 'derivative_uniformity')");
|
||||
|
||||
TEST_F(ResolverDiagnosticControlTest, Conflict_SameNameSameSeverity_Directive) {
|
||||
DiagnosticDirective(ast::DiagnosticSeverity::kError,
|
||||
Expr(Source{{12, 34}}, "chromium_unreachable_code"));
|
||||
Ident(Source{{12, 34}}, "chromium_unreachable_code"));
|
||||
DiagnosticDirective(ast::DiagnosticSeverity::kError,
|
||||
Expr(Source{{56, 78}}, "chromium_unreachable_code"));
|
||||
Ident(Source{{56, 78}}, "chromium_unreachable_code"));
|
||||
EXPECT_TRUE(r()->Resolve()) << r()->error();
|
||||
}
|
||||
|
||||
TEST_F(ResolverDiagnosticControlTest, Conflict_SameNameDifferentSeverity_Directive) {
|
||||
DiagnosticDirective(Source{{12, 34}}, ast::DiagnosticSeverity::kError,
|
||||
Expr("chromium_unreachable_code"));
|
||||
"chromium_unreachable_code");
|
||||
DiagnosticDirective(Source{{56, 78}}, ast::DiagnosticSeverity::kOff,
|
||||
Expr("chromium_unreachable_code"));
|
||||
"chromium_unreachable_code");
|
||||
EXPECT_FALSE(r()->Resolve());
|
||||
EXPECT_EQ(r()->error(),
|
||||
R"(56:78 error: conflicting diagnostic directive
|
||||
@@ -283,9 +280,9 @@ TEST_F(ResolverDiagnosticControlTest, Conflict_SameNameDifferentSeverity_Directi
|
||||
|
||||
TEST_F(ResolverDiagnosticControlTest, Conflict_SameUnknownNameDifferentSeverity_Directive) {
|
||||
DiagnosticDirective(Source{{12, 34}}, ast::DiagnosticSeverity::kError,
|
||||
Expr("chromium_unreachable_codes"));
|
||||
"chromium_unreachable_codes");
|
||||
DiagnosticDirective(Source{{56, 78}}, ast::DiagnosticSeverity::kOff,
|
||||
Expr("chromium_unreachable_codes"));
|
||||
"chromium_unreachable_codes");
|
||||
EXPECT_FALSE(r()->Resolve());
|
||||
EXPECT_EQ(r()->error(),
|
||||
R"(warning: unrecognized diagnostic rule 'chromium_unreachable_codes'
|
||||
@@ -300,26 +297,26 @@ Possible values: 'chromium_unreachable_code', 'derivative_uniformity'
|
||||
|
||||
TEST_F(ResolverDiagnosticControlTest, Conflict_DifferentUnknownNameDifferentSeverity_Directive) {
|
||||
DiagnosticDirective(Source{{12, 34}}, ast::DiagnosticSeverity::kError,
|
||||
Expr("chromium_unreachable_codes"));
|
||||
"chromium_unreachable_codes");
|
||||
DiagnosticDirective(Source{{56, 78}}, ast::DiagnosticSeverity::kOff,
|
||||
Expr("chromium_unreachable_codex"));
|
||||
"chromium_unreachable_codex");
|
||||
EXPECT_TRUE(r()->Resolve()) << r()->error();
|
||||
}
|
||||
|
||||
TEST_F(ResolverDiagnosticControlTest, Conflict_SameNameSameSeverity_Attribute) {
|
||||
auto* attr1 = DiagnosticAttribute(ast::DiagnosticSeverity::kError,
|
||||
Expr(Source{{12, 34}}, "chromium_unreachable_code"));
|
||||
Ident(Source{{12, 34}}, "chromium_unreachable_code"));
|
||||
auto* attr2 = DiagnosticAttribute(ast::DiagnosticSeverity::kError,
|
||||
Expr(Source{{56, 78}}, "chromium_unreachable_code"));
|
||||
Ident(Source{{56, 78}}, "chromium_unreachable_code"));
|
||||
Func("foo", {}, ty.void_(), {}, utils::Vector{attr1, attr2});
|
||||
EXPECT_TRUE(r()->Resolve()) << r()->error();
|
||||
}
|
||||
|
||||
TEST_F(ResolverDiagnosticControlTest, Conflict_SameNameDifferentSeverity_Attribute) {
|
||||
auto* attr1 = DiagnosticAttribute(Source{{12, 34}}, ast::DiagnosticSeverity::kError,
|
||||
Expr("chromium_unreachable_code"));
|
||||
"chromium_unreachable_code");
|
||||
auto* attr2 = DiagnosticAttribute(Source{{56, 78}}, ast::DiagnosticSeverity::kOff,
|
||||
Expr("chromium_unreachable_code"));
|
||||
"chromium_unreachable_code");
|
||||
Func("foo", {}, ty.void_(), {}, utils::Vector{attr1, attr2});
|
||||
EXPECT_FALSE(r()->Resolve());
|
||||
EXPECT_EQ(r()->error(),
|
||||
@@ -329,9 +326,9 @@ TEST_F(ResolverDiagnosticControlTest, Conflict_SameNameDifferentSeverity_Attribu
|
||||
|
||||
TEST_F(ResolverDiagnosticControlTest, Conflict_SameUnknownNameDifferentSeverity_Attribute) {
|
||||
auto* attr1 = DiagnosticAttribute(Source{{12, 34}}, ast::DiagnosticSeverity::kError,
|
||||
Expr("chromium_unreachable_codes"));
|
||||
"chromium_unreachable_codes");
|
||||
auto* attr2 = DiagnosticAttribute(Source{{56, 78}}, ast::DiagnosticSeverity::kOff,
|
||||
Expr("chromium_unreachable_codes"));
|
||||
"chromium_unreachable_codes");
|
||||
Func("foo", {}, ty.void_(), {}, utils::Vector{attr1, attr2});
|
||||
EXPECT_FALSE(r()->Resolve());
|
||||
EXPECT_EQ(r()->error(),
|
||||
@@ -347,9 +344,9 @@ Possible values: 'chromium_unreachable_code', 'derivative_uniformity'
|
||||
|
||||
TEST_F(ResolverDiagnosticControlTest, Conflict_DifferentUnknownNameDifferentSeverity_Attribute) {
|
||||
auto* attr1 = DiagnosticAttribute(Source{{12, 34}}, ast::DiagnosticSeverity::kError,
|
||||
Expr("chromium_unreachable_codes"));
|
||||
"chromium_unreachable_codes");
|
||||
auto* attr2 = DiagnosticAttribute(Source{{56, 78}}, ast::DiagnosticSeverity::kOff,
|
||||
Expr("chromium_unreachable_codex"));
|
||||
"chromium_unreachable_codex");
|
||||
Func("foo", {}, ty.void_(), {}, utils::Vector{attr1, attr2});
|
||||
EXPECT_TRUE(r()->Resolve()) << r()->error();
|
||||
}
|
||||
|
||||
@@ -3060,9 +3060,8 @@ sem::Expression* Resolver::UnaryOp(const ast::UnaryOpExpression* unary) {
|
||||
|
||||
bool Resolver::DiagnosticControl(const ast::DiagnosticControl* control) {
|
||||
Mark(control->rule_name);
|
||||
Mark(control->rule_name->identifier);
|
||||
|
||||
auto rule_name = builder_->Symbols().NameFor(control->rule_name->identifier->symbol);
|
||||
auto rule_name = builder_->Symbols().NameFor(control->rule_name->symbol);
|
||||
auto rule = ast::ParseDiagnosticRule(rule_name);
|
||||
if (rule != ast::DiagnosticRule::kUndefined) {
|
||||
validator_.DiagnosticFilters().Set(rule, control->severity);
|
||||
|
||||
@@ -2452,7 +2452,7 @@ bool Validator::DiagnosticControls(utils::VectorRef<const ast::DiagnosticControl
|
||||
// They conflict if the rule name is the same and the severity is different.
|
||||
utils::Hashmap<Symbol, const ast::DiagnosticControl*, 8> diagnostics;
|
||||
for (auto* dc : controls) {
|
||||
auto diag_added = diagnostics.Add(dc->rule_name->identifier->symbol, dc);
|
||||
auto diag_added = diagnostics.Add(dc->rule_name->symbol, dc);
|
||||
if (!diag_added && (*diag_added.value)->severity != dc->severity) {
|
||||
{
|
||||
std::ostringstream ss;
|
||||
@@ -2461,8 +2461,8 @@ bool Validator::DiagnosticControls(utils::VectorRef<const ast::DiagnosticControl
|
||||
}
|
||||
{
|
||||
std::ostringstream ss;
|
||||
ss << "severity of '" << symbols_.NameFor(dc->rule_name->identifier->symbol)
|
||||
<< "' set to '" << dc->severity << "' here";
|
||||
ss << "severity of '" << symbols_.NameFor(dc->rule_name->symbol) << "' set to '"
|
||||
<< dc->severity << "' here";
|
||||
AddNote(ss.str(), (*diag_added.value)->source);
|
||||
}
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user