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