checker: check enum field name duplicate
parent
50491670af
commit
4d415e56d6
|
@ -974,7 +974,12 @@ pub fn (mut c Checker) return_stmt(return_stmt mut ast.Return) {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut c Checker) enum_decl(decl ast.EnumDecl) {
|
pub fn (mut c Checker) enum_decl(decl ast.EnumDecl) {
|
||||||
for field in decl.fields {
|
for i, field in decl.fields {
|
||||||
|
for j in 0..i {
|
||||||
|
if field.name == decl.fields[j].name {
|
||||||
|
c.error('field name `$field.name` duplicate', field.pos)
|
||||||
|
}
|
||||||
|
}
|
||||||
if field.has_expr {
|
if field.has_expr {
|
||||||
match field.expr {
|
match field.expr {
|
||||||
ast.IntegerLiteral {}
|
ast.IntegerLiteral {}
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
vlib/v/checker/tests/enum_field_name_duplicate_err.v:5:2: error: field name `green` duplicate
|
||||||
|
3| yellow
|
||||||
|
4| blue
|
||||||
|
5| green
|
||||||
|
~~~~~
|
||||||
|
6| }
|
||||||
|
7|
|
|
@ -0,0 +1,10 @@
|
||||||
|
enum Color {
|
||||||
|
green
|
||||||
|
yellow
|
||||||
|
blue
|
||||||
|
green
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main(){
|
||||||
|
println('hello')
|
||||||
|
}
|
Loading…
Reference in New Issue