tint/resolver: Adjust diagnostic source for member accessor error
And clean up sources in the validation_test.cc file. Change-Id: If602c7c955c6264e7df98146c320e69aafe55654 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/116282 Kokoro: Kokoro <noreply+kokoro@google.com> Reviewed-by: Dan Sinclair <dsinclair@chromium.org> Commit-Queue: Ben Clayton <bclayton@google.com>
This commit is contained in:
parent
3a2573e93c
commit
8e2c3e14f9
|
@ -2866,7 +2866,7 @@ sem::Expression* Resolver::MemberAccessor(const ast::MemberAccessorExpression* e
|
||||||
[&](Default) {
|
[&](Default) {
|
||||||
AddError("invalid member accessor expression. Expected vector or struct, got '" +
|
AddError("invalid member accessor expression. Expected vector or struct, got '" +
|
||||||
sem_.TypeNameOf(storage_ty) + "'",
|
sem_.TypeNameOf(storage_ty) + "'",
|
||||||
expr->structure->source);
|
expr->member->source);
|
||||||
return nullptr;
|
return nullptr;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -159,17 +159,17 @@ TEST_F(ResolverValidationTest, Expr_ErrUnknownExprType) {
|
||||||
|
|
||||||
TEST_F(ResolverValidationTest, Expr_DontCall_Function) {
|
TEST_F(ResolverValidationTest, Expr_DontCall_Function) {
|
||||||
Func("func", utils::Empty, ty.void_(), utils::Empty, {});
|
Func("func", utils::Empty, ty.void_(), utils::Empty, {});
|
||||||
WrapInFunction(Expr(Source{{{3, 3}, {3, 8}}}, "func"));
|
WrapInFunction(Expr(Source{{12, 34}}, "func"));
|
||||||
|
|
||||||
EXPECT_FALSE(r()->Resolve());
|
EXPECT_FALSE(r()->Resolve());
|
||||||
EXPECT_EQ(r()->error(), "3:8 error: missing '(' for function call");
|
EXPECT_EQ(r()->error(), "12:34 error: missing '(' for function call");
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(ResolverValidationTest, Expr_DontCall_Builtin) {
|
TEST_F(ResolverValidationTest, Expr_DontCall_Builtin) {
|
||||||
WrapInFunction(Expr(Source{{{3, 3}, {3, 8}}}, "round"));
|
WrapInFunction(Expr(Source{{12, 34}}, "round"));
|
||||||
|
|
||||||
EXPECT_FALSE(r()->Resolve());
|
EXPECT_FALSE(r()->Resolve());
|
||||||
EXPECT_EQ(r()->error(), "3:8 error: missing '(' for builtin call");
|
EXPECT_EQ(r()->error(), "12:34 error: missing '(' for builtin call");
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(ResolverValidationTest, Expr_DontCall_Type) {
|
TEST_F(ResolverValidationTest, Expr_DontCall_Type) {
|
||||||
|
@ -405,9 +405,9 @@ TEST_F(ResolverValidationTest, Expr_MemberAccessor_BadParent) {
|
||||||
// var param: vec4<f32>
|
// var param: vec4<f32>
|
||||||
// let ret: f32 = *(¶m).x;
|
// let ret: f32 = *(¶m).x;
|
||||||
auto* param = Var("param", ty.vec4<f32>());
|
auto* param = Var("param", ty.vec4<f32>());
|
||||||
auto* x = Expr(Source{{{3, 3}, {3, 8}}}, "x");
|
auto* x = Expr(Source{{12, 34}}, "x");
|
||||||
|
|
||||||
auto* addressOf_expr = AddressOf(Source{{12, 34}}, param);
|
auto* addressOf_expr = AddressOf(param);
|
||||||
auto* accessor_expr = MemberAccessor(addressOf_expr, x);
|
auto* accessor_expr = MemberAccessor(addressOf_expr, x);
|
||||||
auto* star_p = Deref(accessor_expr);
|
auto* star_p = Deref(accessor_expr);
|
||||||
auto* ret = Var("r", ty.f32(), star_p);
|
auto* ret = Var("r", ty.f32(), star_p);
|
||||||
|
@ -415,8 +415,8 @@ TEST_F(ResolverValidationTest, Expr_MemberAccessor_BadParent) {
|
||||||
|
|
||||||
EXPECT_FALSE(r()->Resolve());
|
EXPECT_FALSE(r()->Resolve());
|
||||||
EXPECT_EQ(r()->error(),
|
EXPECT_EQ(r()->error(),
|
||||||
"12:34 error: invalid member accessor expression. Expected vector "
|
"12:34 error: invalid member accessor expression. Expected vector or struct, got "
|
||||||
"or struct, got 'ptr<function, vec4<f32>, read_write>'");
|
"'ptr<function, vec4<f32>, read_write>'");
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(ResolverValidationTest, EXpr_MemberAccessor_FuncGoodParent) {
|
TEST_F(ResolverValidationTest, EXpr_MemberAccessor_FuncGoodParent) {
|
||||||
|
@ -426,7 +426,7 @@ TEST_F(ResolverValidationTest, EXpr_MemberAccessor_FuncGoodParent) {
|
||||||
// }
|
// }
|
||||||
auto* p = Param("p", ty.pointer(ty.vec4<f32>(), ast::AddressSpace::kFunction));
|
auto* p = Param("p", ty.pointer(ty.vec4<f32>(), ast::AddressSpace::kFunction));
|
||||||
auto* star_p = Deref(p);
|
auto* star_p = Deref(p);
|
||||||
auto* z = Expr(Source{{{3, 3}, {3, 8}}}, "z");
|
auto* z = Expr("z");
|
||||||
auto* accessor_expr = MemberAccessor(star_p, z);
|
auto* accessor_expr = MemberAccessor(star_p, z);
|
||||||
auto* x = Var("x", ty.f32(), accessor_expr);
|
auto* x = Var("x", ty.f32(), accessor_expr);
|
||||||
Func("func", utils::Vector{p}, ty.f32(),
|
Func("func", utils::Vector{p}, ty.f32(),
|
||||||
|
@ -443,7 +443,7 @@ TEST_F(ResolverValidationTest, EXpr_MemberAccessor_FuncBadParent) {
|
||||||
// return x;
|
// return x;
|
||||||
// }
|
// }
|
||||||
auto* p = Param("p", ty.pointer(ty.vec4<f32>(), ast::AddressSpace::kFunction));
|
auto* p = Param("p", ty.pointer(ty.vec4<f32>(), ast::AddressSpace::kFunction));
|
||||||
auto* z = Expr(Source{{{3, 3}, {3, 8}}}, "z");
|
auto* z = Expr(Source{{12, 34}}, "z");
|
||||||
auto* accessor_expr = MemberAccessor(p, z);
|
auto* accessor_expr = MemberAccessor(p, z);
|
||||||
auto* star_p = Deref(accessor_expr);
|
auto* star_p = Deref(accessor_expr);
|
||||||
auto* x = Var("x", ty.f32(), star_p);
|
auto* x = Var("x", ty.f32(), star_p);
|
||||||
|
@ -455,8 +455,8 @@ TEST_F(ResolverValidationTest, EXpr_MemberAccessor_FuncBadParent) {
|
||||||
|
|
||||||
EXPECT_FALSE(r()->Resolve());
|
EXPECT_FALSE(r()->Resolve());
|
||||||
EXPECT_EQ(r()->error(),
|
EXPECT_EQ(r()->error(),
|
||||||
"error: invalid member accessor expression. "
|
"12:34 error: invalid member accessor expression. Expected vector or struct, got "
|
||||||
"Expected vector or struct, got 'ptr<function, vec4<f32>, read_write>'");
|
"'ptr<function, vec4<f32>, read_write>'");
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(ResolverValidationTest,
|
TEST_F(ResolverValidationTest,
|
||||||
|
|
Loading…
Reference in New Issue