checker: check for `x := Abc { f: fn () ? {} }` mismatch, when `f` is `fn ()`
parent
6c6bb08547
commit
9fabf9f20c
|
@ -144,6 +144,9 @@ pub fn (mut c Checker) check_matching_function_symbols(got_type_sym &ast.TypeSym
|
||||||
if got_fn.params.len != exp_fn.params.len {
|
if got_fn.params.len != exp_fn.params.len {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
if got_fn.return_type.has_flag(.optional) != exp_fn.return_type.has_flag(.optional) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
if !c.check_basic(got_fn.return_type, exp_fn.return_type) {
|
if !c.check_basic(got_fn.return_type, exp_fn.return_type) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
vlib/v/checker/tests/fn_check_for_matching_optional_result_in_fields.vv:7:3: error: cannot assign to field `f`: expected `fn (voidptr)`, not `fn (voidptr) ?`
|
||||||
|
5 | fn main() {
|
||||||
|
6 | a := Abc{
|
||||||
|
7 | f: fn (data voidptr) ? {}
|
||||||
|
| ~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
8 | }
|
||||||
|
9 | println(a)
|
|
@ -0,0 +1,10 @@
|
||||||
|
struct Abc {
|
||||||
|
f fn (voidptr)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
a := Abc{
|
||||||
|
f: fn (data voidptr) ? {}
|
||||||
|
}
|
||||||
|
println(a)
|
||||||
|
}
|
Loading…
Reference in New Issue