blob: 43b6b857e3663c3edb36e090f5a9e2bf07c766ca [file] [edit]
(module $M
(type $#Top <...>)
(type $Array<_Type> <...>)
(type $Callable <...>)
(type $Fields <...>)
(type $_FunctionType <...>)
(type $_InterfaceType <...>)
(type $_Type <...>)
(global $_FunctionType (ref $_FunctionType) <...>)
(global $_InterfaceType (ref $_InterfaceType) <...>)
(func $"<obj> as Callable<T0>" (param $var0 (ref $#Top)) (param $var1 (ref $_Type)) (result (ref $Callable))
(local $var2 (ref $#Top))
(local $var3 (ref $_Type))
(local $var4 i32)
(local $var5 (ref $#Top))
(local $var6 i32)
(local $var7 i32)
(local $var8 (ref $Array<_Type>))
block $label0
local.get $var0
local.get $var1
local.set $var3
local.set $var2
block $label1 (result i32)
block $label2 (result i32)
local.get $var2
local.set $var5
block $label3 (result i32)
block $label4 (result i32)
local.get $var5
struct.get $#Top $field0
local.set $var7
block $label5 (result i32)
local.get $var7
i32.const 106
i32.eq
if
i32.const 1
br $label5
end
i32.const 0
br $label5
end $label5
br $label4
end $label4
br $label3
end $label3
local.set $var4
block $label6
local.get $var4
i32.const 1
i32.eq
br_if $label6
i32.const 0
br $label2
end $label6
local.get $var2
call $Object._getTypeArguments
local.set $var8
local.get $var8
i32.const 0
array.get $Array<_Type>
local.get $var3
call $_isTypeSubtype
local.set $var4
block $label7
local.get $var4
i32.const 1
i32.eq
br_if $label7
i32.const 0
br $label2
end $label7
i32.const 1
br $label2
end $label2
br $label1
end $label1
br_if $label0
local.get $var0
i32.const 0
i32.const 106
local.get $var1
call $_throwInterfaceTypeAsCheckError1
unreachable
end $label0
local.get $var0
ref.cast $Callable
return
)
(func $Fields (param $var0 (ref $_Type)) (result (ref $Fields)) <...>)
(func $Object._getTypeArguments (param $object (ref $#Top)) (result (ref $Array<_Type>)) <...>)
(func $_isTypeSubtype (param $s (ref $_Type)) (param $t (ref $_Type)) (result i32) <...>)
(func $_throwInterfaceTypeAsCheckError1 (param $o (ref null $#Top)) (param $isDeclaredNullable i32) (param $tId i32) (param $typeArgument0 (ref $_Type)) <...>)
(func $covarianceCheckMain
(local $fields (ref $Fields))
global.get $_InterfaceType
call $Fields
local.set $fields
local.get $fields
struct.get $Fields $contravariantUse
global.get $_FunctionType
call $"<obj> as Callable<T0>"
drop
)
)