v.ast: allow for `fn f()&IAbc{return voidptr(0)}` with no additional voidptr implicit conversions to compile
parent
862c4cf371
commit
69ce8baefd
|
@ -1122,6 +1122,9 @@ fn (mut table Table) does_type_implement_interface(typ Type, inter_typ Type) boo
|
|||
return false
|
||||
}
|
||||
inter_sym.info.types << utyp
|
||||
if !inter_sym.info.types.contains(voidptr_type) {
|
||||
inter_sym.info.types << voidptr_type
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
interface IAbc {
|
||||
name string
|
||||
xyz()
|
||||
}
|
||||
|
||||
fn f(i &IAbc) string {
|
||||
return '$i'
|
||||
}
|
||||
|
||||
struct Abc {
|
||||
name string
|
||||
x int = 123
|
||||
}
|
||||
|
||||
fn (a Abc) xyz() {}
|
||||
|
||||
fn resource__null() &IAbc {
|
||||
return voidptr(0)
|
||||
}
|
||||
|
||||
fn test_fn_returning_voidptr_casted_as_interface_works() {
|
||||
pi := resource__null()
|
||||
assert f(pi) == '&IAbc(0)'
|
||||
}
|
Loading…
Reference in New Issue