[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; }