parent
013589e9fe
commit
9a2df0df0e
|
@ -1709,6 +1709,11 @@ fn (mut g Gen) ref_or_deref_arg(arg ast.CallArg, expected_type ast.Type, lang as
|
||||||
g.write('&/*sum*/')
|
g.write('&/*sum*/')
|
||||||
g.expr(arg.expr)
|
g.expr(arg.expr)
|
||||||
return
|
return
|
||||||
|
} else if arg_sym.kind == .interface_ && exp_sym.kind == .interface_
|
||||||
|
&& (arg.expr is ast.Ident || arg.expr is ast.SelectorExpr) {
|
||||||
|
g.write('&/*iface*/')
|
||||||
|
g.expr(arg.expr)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if !g.is_json_fn {
|
if !g.is_json_fn {
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
interface TheInterface {
|
||||||
|
mut:
|
||||||
|
an_interface() ?
|
||||||
|
}
|
||||||
|
|
||||||
|
struct Implementation {
|
||||||
|
}
|
||||||
|
|
||||||
|
fn (mut i Implementation) an_interface() ? {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
fn maker() ?TheInterface {
|
||||||
|
inner := Implementation{}
|
||||||
|
return inner
|
||||||
|
}
|
||||||
|
|
||||||
|
fn do(mut inter TheInterface) string {
|
||||||
|
return 'ok'
|
||||||
|
}
|
||||||
|
|
||||||
|
fn test_fn_mut_arg_of_interface() ? {
|
||||||
|
mut inner := maker() ?
|
||||||
|
ret := do(mut inner)
|
||||||
|
println(ret)
|
||||||
|
assert ret == 'ok'
|
||||||
|
}
|
Loading…
Reference in New Issue