mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
checker: improve the nil fn error a bit
This commit is contained in:
parent
3211a653c3
commit
f915366ac4
@ -77,7 +77,7 @@ fn (mut c Checker) struct_decl(mut node ast.StructDecl) {
|
|||||||
if sym.kind == .function {
|
if sym.kind == .function {
|
||||||
if !field.typ.has_flag(.option) && !field.has_default_expr
|
if !field.typ.has_flag(.option) && !field.has_default_expr
|
||||||
&& field.attrs.filter(it.name == 'required').len == 0 {
|
&& field.attrs.filter(it.name == 'required').len == 0 {
|
||||||
error_msg := 'uninitialized `fn` struct fields are not allowed, since they can result in segfaults; use `?fn` or initialize the field with `=` (if you absolutely want to have unsafe function pointers, use `= unsafe { nil }`)'
|
error_msg := 'uninitialized `fn` struct fields are not allowed, since they can result in segfaults; use `?fn` or `[required]` or initialize the field with `=` (if you absolutely want to have unsafe function pointers, use `= unsafe { nil }`)'
|
||||||
c.note(error_msg, field.pos)
|
c.note(error_msg, field.pos)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
vlib/v/checker/tests/fn_check_for_matching_option_result_in_fields.vv:2:2: notice: uninitialized `fn` struct fields are not allowed, since they can result in segfaults; use `?fn` or initialize the field with `=` (if you absolutely want to have unsafe function pointers, use `= unsafe { nil }`)
|
vlib/v/checker/tests/fn_check_for_matching_option_result_in_fields.vv:2:2: notice: uninitialized `fn` struct fields are not allowed, since they can result in segfaults; use `?fn` or `[required]` or initialize the field with `=` (if you absolutely want to have unsafe function pointers, use `= unsafe { nil }`)
|
||||||
1 | struct Abc {
|
1 | struct Abc {
|
||||||
2 | f fn (voidptr)
|
2 | f fn (voidptr)
|
||||||
| ~~~~~~~~~~~~~~
|
| ~~~~~~~~~~~~~~
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
vlib/v/checker/tests/generics_struct_init_err.vv:14:2: notice: uninitialized `fn` struct fields are not allowed, since they can result in segfaults; use `?fn` or initialize the field with `=` (if you absolutely want to have unsafe function pointers, use `= unsafe { nil }`)
|
vlib/v/checker/tests/generics_struct_init_err.vv:14:2: notice: uninitialized `fn` struct fields are not allowed, since they can result in segfaults; use `?fn` or `[required]` or initialize the field with `=` (if you absolutely want to have unsafe function pointers, use `= unsafe { nil }`)
|
||||||
12 |
|
12 |
|
||||||
13 | struct FnHolder2[T] {
|
13 | struct FnHolder2[T] {
|
||||||
14 | func fn (int) int
|
14 | func fn (int) int
|
||||||
|
Loading…
Reference in New Issue
Block a user