Exemplo n.º 1
0
        private void ValidateEnum(EnumDefinition enumDef)
        {
            if (!enumDef.IsValidUnderlyingType())
            {
                _contracts.AddError(enumDef.ParseContext, "Invalid underlying type: {0}", enumDef.UnderlyingType);
            }

            if (enumDef.Options.Proto && enumDef.UnderlyingType.NetType != "int")
            {
                _contracts.AddError(enumDef.ParseContext, "An enum used in a proto file must have an underlying type of int");
            }

            ValidateAttributes(enumDef.Attributes);

            var definedMembers = new HashSet <string>();

            foreach (var member in enumDef.Members)
            {
                if (!definedMembers.Add(member.Name))
                {
                    _contracts.AddError(member.ParseContext, "Duplicate enum member: {0}", member.Name);
                }

                ValidateAttributes(member.Attributes);
            }
        }