parser: error on duplicate enum declaration
							parent
							
								
									668483ee56
								
							
						
					
					
						commit
						14c4ba6dd9
					
				| 
						 | 
				
			
			@ -1890,6 +1890,7 @@ fn (mut p Parser) enum_decl() ast.EnumDecl {
 | 
			
		|||
	}
 | 
			
		||||
	p.check(.key_enum)
 | 
			
		||||
	end_pos := p.tok.position()
 | 
			
		||||
	name_pos := p.tok.position()
 | 
			
		||||
	enum_name := p.check_name()
 | 
			
		||||
	if enum_name.len == 1 {
 | 
			
		||||
		p.error_with_pos('single letter capital names are reserved for generic template types.',
 | 
			
		||||
| 
						 | 
				
			
			@ -1948,7 +1949,7 @@ $pubfn (mut e  $enum_name) toggle(flag $enum_name)   { unsafe{ *e = int(*e) ^  (
 | 
			
		|||
//
 | 
			
		||||
')
 | 
			
		||||
	}
 | 
			
		||||
	p.table.register_type_symbol(table.TypeSymbol{
 | 
			
		||||
	idx := p.table.register_type_symbol(table.TypeSymbol{
 | 
			
		||||
		kind: .enum_
 | 
			
		||||
		name: name
 | 
			
		||||
		cname: util.no_dots(name)
 | 
			
		||||
| 
						 | 
				
			
			@ -1959,6 +1960,10 @@ $pubfn (mut e  $enum_name) toggle(flag $enum_name)   { unsafe{ *e = int(*e) ^  (
 | 
			
		|||
			is_multi_allowed: is_multi_allowed
 | 
			
		||||
		}
 | 
			
		||||
	})
 | 
			
		||||
	if idx == -1 {
 | 
			
		||||
		p.error_with_pos('cannot register enum `$name`, another type with this name exists',
 | 
			
		||||
			name_pos)
 | 
			
		||||
	}
 | 
			
		||||
	return ast.EnumDecl{
 | 
			
		||||
		name: name
 | 
			
		||||
		is_pub: is_pub
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue