[tint][resolver] Tweak diagnostic messages
So that they read easier, and are more similar to other diagnostics.
Change-Id: I9ede3df263acc3abb5c2de1f1e03506eeebbe620
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/160081
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: James Price <jrprice@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
diff --git a/src/tint/lang/wgsl/resolver/attribute_validation_test.cc b/src/tint/lang/wgsl/resolver/attribute_validation_test.cc
index 96bbcae..d88daa5 100644
--- a/src/tint/lang/wgsl/resolver/attribute_validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/attribute_validation_test.cc
@@ -254,6 +254,7 @@
Enable(wgsl::Extension::kChromiumInternalDualSourceBlending);
}
}
+
void EnableRequiredExtensions() {
for (auto attribute : GetParam().attributes) {
EnableExtensionIfNecessary(attribute);
@@ -640,7 +641,7 @@
},
TestParams{
{AttributeKind::kBuiltinPosition},
- R"(1:2 error: @builtin(position) cannot be used in input of compute pipeline stage)",
+ R"(1:2 error: @builtin(position) cannot be used for compute shader input)",
},
TestParams{
{AttributeKind::kDiagnostic},
@@ -819,7 +820,7 @@
},
TestParams{
{AttributeKind::kBuiltinPosition},
- R"(1:2 error: @builtin(position) cannot be used in input of vertex pipeline stage)",
+ R"(1:2 error: @builtin(position) cannot be used for vertex shader input)",
},
TestParams{
{AttributeKind::kDiagnostic},
@@ -847,7 +848,7 @@
},
TestParams{
{AttributeKind::kInterpolate, AttributeKind::kBuiltinPosition},
- R"(3:4 error: @builtin(position) cannot be used in input of vertex pipeline stage)",
+ R"(3:4 error: @builtin(position) cannot be used for vertex shader input)",
},
TestParams{
{AttributeKind::kInvariant},
@@ -859,7 +860,7 @@
},
TestParams{
{AttributeKind::kInvariant, AttributeKind::kBuiltinPosition},
- R"(3:4 error: @builtin(position) cannot be used in input of vertex pipeline stage)",
+ R"(3:4 error: @builtin(position) cannot be used for vertex shader input)",
},
TestParams{
{AttributeKind::kLocation},
@@ -920,7 +921,7 @@
},
TestParams{
{AttributeKind::kBuiltinPosition},
- R"(1:2 error: @builtin(position) cannot be used in output of compute pipeline stage)",
+ R"(1:2 error: @builtin(position) cannot be used for compute shader output)",
},
TestParams{
{AttributeKind::kDiagnostic},
@@ -936,7 +937,7 @@
},
TestParams{
{AttributeKind::kIndex},
- R"(1:2 error: @index can only be used as fragment shader output)",
+ R"(1:2 error: @index can only be used for fragment shader output)",
},
TestParams{
{AttributeKind::kInterpolate},
@@ -1002,7 +1003,7 @@
},
TestParams{
{AttributeKind::kBuiltinPosition},
- R"(1:2 error: @builtin(position) cannot be used in output of fragment pipeline stage)",
+ R"(1:2 error: @builtin(position) cannot be used for fragment shader output)",
},
TestParams{
{AttributeKind::kDiagnostic},
@@ -1126,7 +1127,7 @@
},
TestParams{
{AttributeKind::kIndex},
- R"(1:2 error: @index can only be used as fragment shader output)",
+ R"(1:2 error: @index can only be used for fragment shader output)",
},
TestParams{
{AttributeKind::kInterpolate},
diff --git a/src/tint/lang/wgsl/resolver/builtins_validation_test.cc b/src/tint/lang/wgsl/resolver/builtins_validation_test.cc
index 1da3470..616161d 100644
--- a/src/tint/lang/wgsl/resolver/builtins_validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/builtins_validation_test.cc
@@ -147,7 +147,7 @@
} else {
StringStream err;
err << "12:34 error: @builtin(" << params.builtin << ")";
- err << " cannot be used in input of " << params.stage << " pipeline stage";
+ err << " cannot be used for " << params.stage << " shader input";
EXPECT_FALSE(r()->Resolve());
EXPECT_EQ(r()->error(), err.str());
}
@@ -179,9 +179,8 @@
Location(0_a),
});
EXPECT_FALSE(r()->Resolve());
- EXPECT_EQ(
- r()->error(),
- "12:34 error: @builtin(frag_depth) cannot be used in input of fragment pipeline stage");
+ EXPECT_EQ(r()->error(),
+ "12:34 error: @builtin(frag_depth) cannot be used for fragment shader input");
}
TEST_F(ResolverBuiltinsValidationTest, FragDepthIsInputStruct_Fail) {
@@ -215,9 +214,8 @@
});
EXPECT_FALSE(r()->Resolve());
EXPECT_EQ(r()->error(),
- "12:34 error: @builtin(frag_depth) cannot be used in input of "
- "fragment pipeline stage\n"
- "note: while analyzing entry point 'fragShader'");
+ R"(12:34 error: @builtin(frag_depth) cannot be used for fragment shader input
+note: while analyzing entry point 'fragShader')");
}
TEST_F(ResolverBuiltinsValidationTest, StructBuiltinInsideEntryPoint_Ignored) {
diff --git a/src/tint/lang/wgsl/resolver/dual_source_blending_extension_test.cc b/src/tint/lang/wgsl/resolver/dual_source_blending_extension_test.cc
index 10acd30..74451cd 100644
--- a/src/tint/lang/wgsl/resolver/dual_source_blending_extension_test.cc
+++ b/src/tint/lang/wgsl/resolver/dual_source_blending_extension_test.cc
@@ -47,9 +47,9 @@
});
EXPECT_FALSE(r()->Resolve());
- EXPECT_EQ(r()->error(),
- "12:34 error: use of '@index' attribute requires enabling extension "
- "'chromium_internal_dual_source_blending'");
+ EXPECT_EQ(
+ r()->error(),
+ R"(12:34 error: use of @index requires enabling extension 'chromium_internal_dual_source_blending')");
}
class DualSourceBlendingExtensionTests : public ResolverTest {
diff --git a/src/tint/lang/wgsl/resolver/validator.cc b/src/tint/lang/wgsl/resolver/validator.cc
index 7c8e2c9..1a2cff8 100644
--- a/src/tint/lang/wgsl/resolver/validator.cc
+++ b/src/tint/lang/wgsl/resolver/validator.cc
@@ -984,8 +984,8 @@
if (is_stage_mismatch) {
StringStream err;
- err << "@builtin(" << builtin << ") cannot be used in "
- << (is_input ? "input of " : "output of ") << stage_name.str() << " pipeline stage";
+ err << "@builtin(" << builtin << ") cannot be used for " << stage_name.str() << " shader "
+ << (is_input ? "input" : "output");
AddError(err.str(), attr->source);
return false;
}
@@ -2214,8 +2214,8 @@
[&](const ast::StructMemberSizeAttribute*) {
if (!member->Type()->HasCreationFixedFootprint()) {
AddError(
- "@size can only be applied to members where the member's type size "
- "can be fully determined at shader creation time",
+ "@size can only be applied to members where the member's type size can "
+ "be fully determined at shader creation time",
attr->source);
return false;
}
@@ -2311,8 +2311,7 @@
const std::optional<bool> is_input) const {
if (!enabled_extensions_.Contains(wgsl::Extension::kChromiumInternalDualSourceBlending)) {
AddError(
- "use of '@index' attribute requires enabling extension "
- "'chromium_internal_dual_source_blending'",
+ "use of @index requires enabling extension 'chromium_internal_dual_source_blending'",
attr->source);
return false;
}
@@ -2321,7 +2320,7 @@
stage != ast::PipelineStage::kNone && stage != ast::PipelineStage::kFragment;
bool is_output = is_input.value_or(false);
if (is_stage_non_fragment || is_output) {
- AddError(AttrToStr(attr) + " can only be used as fragment shader output", attr->source);
+ AddError(AttrToStr(attr) + " can only be used for fragment shader output", attr->source);
return false;
}