resolver: Fix for-loop conditional validation
It wasn't unwrapping the reference before type checking Change-Id: I4bfc038c468c32c2a164bbcbef0a97a3e385d5ba Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/60210 Auto-Submit: Ben Clayton <bclayton@google.com> Kokoro: Kokoro <noreply+kokoro@google.com> Reviewed-by: James Price <jrprice@google.com> Commit-Queue: Ben Clayton <bclayton@google.com>
This commit is contained in:
parent
f5490c732d
commit
ada4864ffe
|
@ -2155,7 +2155,7 @@ bool Resolver::ForLoopStatement(ast::ForLoopStatement* stmt) {
|
|||
return false;
|
||||
}
|
||||
|
||||
if (!TypeOf(condition)->Is<sem::Bool>()) {
|
||||
if (!TypeOf(condition)->UnwrapRef()->Is<sem::Bool>()) {
|
||||
AddError(
|
||||
"for-loop condition must be bool, got " + TypeNameOf(condition),
|
||||
condition->source());
|
||||
|
|
|
@ -768,6 +768,16 @@ TEST_F(ResolverTest, Stmt_Loop_ContinueInContinuing_Indirect) {
|
|||
EXPECT_TRUE(r()->Resolve()) << r()->error();
|
||||
}
|
||||
|
||||
TEST_F(ResolverTest, Stmt_ForLoop_CondIsBoolRef) {
|
||||
// var cond : bool = true;
|
||||
// for (; cond; ) {
|
||||
// }
|
||||
|
||||
auto* cond = Var("cond", ty.bool_(), Expr(true));
|
||||
WrapInFunction(Decl(cond), For(nullptr, "cond", nullptr, Block()));
|
||||
EXPECT_TRUE(r()->Resolve()) << r()->error();
|
||||
}
|
||||
|
||||
TEST_F(ResolverTest, Stmt_ForLoop_CondIsNotBool) {
|
||||
// for (; 1.0f; ) {
|
||||
// }
|
||||
|
|
Loading…
Reference in New Issue