checker: show signature for interface method on error (#8111)
parent
7441889efe
commit
890fb2d09d
|
@ -1851,6 +1851,8 @@ fn (mut c Checker) type_implements(typ table.Type, inter_typ table.Type, pos tok
|
|||
if method := typ_sym.find_method(imethod.name) {
|
||||
msg := c.table.is_same_method(imethod, method)
|
||||
if msg.len > 0 {
|
||||
sig := c.table.fn_signature(imethod, skip_receiver: true)
|
||||
c.add_error_detail('$inter_sym.name has `$sig`')
|
||||
c.error('`$styp` incorrectly implements method `$imethod.name` of interface `$inter_sym.name`: $msg',
|
||||
pos)
|
||||
return false
|
||||
|
@ -4907,6 +4909,7 @@ pub fn (mut c Checker) map_init(mut node ast.MapInit) table.Type {
|
|||
return map_type
|
||||
}
|
||||
|
||||
// call this *before* calling error or warn
|
||||
pub fn (mut c Checker) add_error_detail(s string) {
|
||||
c.error_details << s
|
||||
}
|
||||
|
|
|
@ -4,3 +4,4 @@ vlib/v/checker/tests/unimplemented_interface_b.vv:13:6: error: `Cat` incorrectly
|
|||
13 | foo(c)
|
||||
| ^
|
||||
14 | }
|
||||
details: main.Animal has `name() string`
|
||||
|
|
|
@ -4,3 +4,4 @@ vlib/v/checker/tests/unimplemented_interface_c.vv:12:6: error: `Cat` incorrectly
|
|||
12 | foo(Cat{})
|
||||
| ~~~~~
|
||||
13 | }
|
||||
details: main.Animal has `name()`
|
||||
|
|
|
@ -4,3 +4,4 @@ vlib/v/checker/tests/unimplemented_interface_d.vv:12:6: error: `Cat` incorrectly
|
|||
12 | foo(Cat{})
|
||||
| ~~~~~
|
||||
13 | }
|
||||
details: main.Animal has `speak(s string)`
|
||||
|
|
|
@ -4,3 +4,4 @@ vlib/v/checker/tests/unimplemented_interface_e.vv:12:6: error: `Cat` incorrectly
|
|||
12 | foo(Cat{})
|
||||
| ~~~~~
|
||||
13 | }
|
||||
details: main.Animal has `speak(s string)`
|
||||
|
|
|
@ -4,3 +4,4 @@ vlib/v/checker/tests/unimplemented_interface_f.vv:11:13: error: `Cat` incorrectl
|
|||
11 | animals << Cat{}
|
||||
| ~~~~~
|
||||
12 | }
|
||||
details: main.Animal has `speak(s string)`
|
||||
|
|
Loading…
Reference in New Issue