From c74fa9e4718245cc5eb49fed1b958a7b56e52299 Mon Sep 17 00:00:00 2001 From: zakuro Date: Wed, 3 Mar 2021 16:23:39 +0900 Subject: [PATCH] checker: correct pos for type error of `if v is interface` (#9080) --- vlib/v/checker/checker.v | 2 +- vlib/v/checker/tests/is_type_invalid.out | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/vlib/v/checker/checker.v b/vlib/v/checker/checker.v index bc0e008a68..f9f59f1682 100644 --- a/vlib/v/checker/checker.v +++ b/vlib/v/checker/checker.v @@ -4824,7 +4824,7 @@ pub fn (mut c Checker) if_expr(mut node ast.IfExpr) table.Type { left_sym := c.table.get_type_symbol(infix.left_type) expr_type := c.expr(infix.left) if left_sym.kind == .interface_ { - c.type_implements(right_expr.typ, expr_type, branch.pos) + c.type_implements(right_expr.typ, expr_type, branch.cond.position()) } else if !c.check_types(right_expr.typ, expr_type) { expect_str := c.table.type_to_str(right_expr.typ) expr_str := c.table.type_to_str(expr_type) diff --git a/vlib/v/checker/tests/is_type_invalid.out b/vlib/v/checker/tests/is_type_invalid.out index f26cb47d3f..1b1d193a0c 100644 --- a/vlib/v/checker/tests/is_type_invalid.out +++ b/vlib/v/checker/tests/is_type_invalid.out @@ -1,14 +1,14 @@ vlib/v/checker/tests/is_type_invalid.vv:14:12: error: `IoS` has no variant `byte` - 12 | + 12 | 13 | fn main() { 14 | if IoS(1) is byte { | ~~ 15 | println('not cool') 16 | } -vlib/v/checker/tests/is_type_invalid.vv:18:2: error: `Cat` doesn't implement method `speak` of interface `Animal` +vlib/v/checker/tests/is_type_invalid.vv:18:5: error: `Cat` doesn't implement method `speak` of interface `Animal` 16 | } 17 | a := Animal(Dog{}) 18 | if a is Cat { - | ~~~~~~~~~~~ + | ~~~~~~~~ 19 | println('not cool either') 20 | }