checker: check enum field name duplicate

pull/4659/head
yuyi 2020-04-30 15:34:18 +08:00 committed by GitHub
parent 50491670af
commit 4d415e56d6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 23 additions and 1 deletions

View File

@ -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) {
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 {
match field.expr {
ast.IntegerLiteral {}

View File

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

View File

@ -0,0 +1,10 @@
enum Color {
green
yellow
blue
green
}
fn main(){
println('hello')
}