1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

checker: show signature for interface method on error (#8111)

This commit is contained in:
Nick Treleaven 2021-01-14 18:50:06 +00:00 committed by GitHub
parent 7441889efe
commit 890fb2d09d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 8 additions and 0 deletions

View File

@ -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
}

View File

@ -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`

View File

@ -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()`

View File

@ -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)`

View File

@ -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)`

View File

@ -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)`