Changeset 2123

Show
Ignore:
Timestamp:
06/24/09 08:41:56 (15 months ago)
Author:
Chuck.Esterbrook
Message:

Fixed: A duplicate enum error produces an internal error/exception rather than a useful error message.
reported-by:webnov8

Location:
cobra/trunk
Files:
1 added
1 modified

Legend:

Unmodified
Added
Removed
  • cobra/trunk/Source/CobraParser.cobra

    r2121 r2123  
    977977                docString = .docString 
    978978                enumMembers = List<of EnumMember>() 
     979                nameSet = Set<of String>() 
    979980                while .peek.which <> 'DEDENT' 
    980981                        .zeroOrMore('EOL') 
     
    986987                                enumValue = nil 
    987988                        .endOfLine 
    988                         enumMembers.add(EnumMember(enumNameToken, enumValue)) 
    989                         # TODO: check for repeated names 
     989                        if enumNameToken.text in nameSet 
     990                                .recordError(enumNameToken, 'Already defined "[enumNameToken.text]" earlier.') 
     991                        else 
     992                                enumMembers.add(EnumMember(enumNameToken, enumValue)) 
     993                                nameSet.add(enumNameToken.text) 
    990994                        # TODO: check for values that repeat or go backwards 
    991995                .dedent