checker: add a suggestion for misspelled struct field name errors
parent
f534edc371
commit
11b16a63cf
|
@ -1673,6 +1673,11 @@ pub fn (mut c Checker) selector_expr(mut selector_expr ast.SelectorExpr) table.T
|
||||||
c.error('`$sym.source_name` is not a struct', selector_expr.pos)
|
c.error('`$sym.source_name` is not a struct', selector_expr.pos)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
if sym.kind == .struct_ {
|
||||||
|
sss := sym.info as table.Struct
|
||||||
|
suggestion := util.new_suggestion(field_name, sss.fields.map(it.name))
|
||||||
|
c.error(suggestion.say(unknown_field_msg), selector_expr.pos)
|
||||||
|
}
|
||||||
c.error(unknown_field_msg, selector_expr.pos)
|
c.error(unknown_field_msg, selector_expr.pos)
|
||||||
}
|
}
|
||||||
return table.void_type
|
return table.void_type
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
vlib/v/checker/tests/unknown_struct_field_suggest_name.vv:11:16: error: type `Points` has no field or method `xxxa`.
|
||||||
|
Did you mean `xxxx`?
|
||||||
|
9 | p := Points{[1], [2], [3]}
|
||||||
|
10 | println('p: $p')
|
||||||
|
11 | for x in p.xxxa {
|
||||||
|
| ~~~~
|
||||||
|
12 | println('x: $x')
|
||||||
|
13 | }
|
|
@ -0,0 +1,14 @@
|
||||||
|
|
||||||
|
struct Points {
|
||||||
|
xxxx []int
|
||||||
|
yyyy []int
|
||||||
|
zzzz []int
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
p := Points{[1], [2], [3]}
|
||||||
|
println('p: $p')
|
||||||
|
for x in p.xxxa {
|
||||||
|
println('x: $x')
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue