checker: fix `T is int`
parent
d088c4cee3
commit
0bc80951e3
|
@ -5982,7 +5982,8 @@ fn (mut c Checker) comp_if_branch(cond ast.Expr, pos token.Position) bool {
|
|||
type_node := cond.right as ast.TypeNode
|
||||
sym := c.table.get_type_symbol(type_node.typ)
|
||||
if sym.kind != .interface_ {
|
||||
c.error('`$sym.name` is not an interface', cond.right.position())
|
||||
c.expr(cond.left)
|
||||
// c.error('`$sym.name` is not an interface', cond.right.position())
|
||||
}
|
||||
return false
|
||||
} else if cond.left is ast.SelectorExpr || cond.left is ast.TypeNode {
|
||||
|
|
|
@ -319,7 +319,8 @@ fn (mut g Gen) comp_if_cond(cond ast.Expr) bool {
|
|||
got_type := (cond.right as ast.TypeNode).typ
|
||||
// Handle `$if x is Interface {`
|
||||
// mut matches_interface := 'false'
|
||||
if left is ast.TypeNode && cond.right is ast.TypeNode {
|
||||
if left is ast.TypeNode && cond.right is ast.TypeNode
|
||||
&& g.table.get_type_symbol(got_type).kind == .interface_ {
|
||||
// `$if Foo is Interface {`
|
||||
interface_sym := g.table.get_type_symbol(got_type)
|
||||
if interface_sym.info is ast.Interface {
|
||||
|
|
Loading…
Reference in New Issue