Inheritance: Boo.Lang.Compiler.Ast.TypeMember
 void ConvertField(TypeReference typeRef, VariableDeclaration variable, FieldDeclaration fieldDeclaration)
 {
     B.TypeMember m;
     if (currentType is B.EnumDefinition)
     {
         if (variable.Initializer.IsNull)
         {
             m = new B.EnumMember(GetLexicalInfo(fieldDeclaration));
         }
         else
         {
             PrimitiveExpression p = variable.Initializer as PrimitiveExpression;
             if (p == null || !(p.Value is int))
             {
                 AddError(fieldDeclaration, "enum member initializer must be integer value");
                 return;
             }
             m = new B.EnumMember(GetLexicalInfo(fieldDeclaration), new B.IntegerLiteralExpression((int)p.Value));
         }
     }
     else
     {
         m           = new B.Field(GetLexicalInfo(fieldDeclaration), ConvertTypeReference(typeRef), ConvertExpression(variable.Initializer));
         m.Modifiers = ConvertModifier(fieldDeclaration, B.TypeMemberModifiers.Private);
     }
     m.Name = variable.Name;
     ConvertAttributes(fieldDeclaration.Attributes, m.Attributes);
     if (currentType != null)
     {
         currentType.Members.Add(m);
     }
 }
Esempio n. 2
0
        public override void OnEnumMember(AST.EnumMember node)
        {
            DefaultField field = new DefaultField(OuterClass.DefaultReturnType, node.Name, ModifierEnum.Const | ModifierEnum.Public, GetRegion(node), OuterClass);

            ConvertAttributes(node, field);
            OuterClass.Fields.Add(field);
        }
		void ConvertField(TypeReference typeRef, VariableDeclaration variable, FieldDeclaration fieldDeclaration)
		{
			B.TypeMember m;
			if (currentType is B.EnumDefinition) {
				if (variable.Initializer.IsNull) {
					m = new B.EnumMember(GetLexicalInfo(fieldDeclaration));
				} else {
					PrimitiveExpression p = variable.Initializer as PrimitiveExpression;
					if (p == null || !(p.Value is int)) {
						AddError(fieldDeclaration, "enum member initializer must be integer value");
						return;
					}
					m = new B.EnumMember(GetLexicalInfo(fieldDeclaration), new B.IntegerLiteralExpression((int)p.Value));
				}
			} else {
				m = new B.Field(GetLexicalInfo(fieldDeclaration), ConvertTypeReference(typeRef), ConvertExpression(variable.Initializer));
				m.Modifiers = ConvertModifier(fieldDeclaration, B.TypeMemberModifiers.Private);
			}
			m.Name = variable.Name;
			ConvertAttributes(fieldDeclaration.Attributes, m.Attributes);
			if (currentType != null) currentType.Members.Add(m);
		}
Esempio n. 4
0
 public override void LeaveEnumMember(EnumMember node)
 {
     CheckName(node,node.Name);
 }
Esempio n. 5
0
	protected void enum_member(
		TypeMemberCollection container
	) //throws RecognitionException, TokenStreamException
{
		
		IToken  id = null;
			
				EnumMember em = null;
				Expression initializer = null;
			
		
		try {      // for error handling
			attributes();
			id = LT(1);
			match(ID);
			{
				switch ( LA(1) )
				{
				case ASSIGN:
				{
					match(ASSIGN);
					initializer=simple_initializer();
					break;
				}
				case EOL:
				case EOS:
				{
					break;
				}
				default:
				{
					throw new NoViableAltException(LT(1), getFilename());
				}
				 }
			}
			if (0==inputState.guessing)
			{
				
						em = new EnumMember(ToLexicalInfo(id));
						em.Name = id.getText();
						em.Initializer = initializer;
						AddAttributes(em.Attributes);
						container.Add(em);
					
			}
			eos();
			docstring(em);
		}
		catch (RecognitionException ex)
		{
			if (0 == inputState.guessing)
			{
				reportError(ex, "enum_member");
				recover(ex,tokenSet_48_);
			}
			else
			{
				throw ex;
			}
		}
	}
Esempio n. 6
0
 public InternalEnumMember(TypeSystemServices tagManager, EnumMember member)
 {
     _member = member;
 }
Esempio n. 7
0
 public override void OnEnumMember(EnumMember node)
 {
     _emitter.EmitFieldAttributes(node);
 }
Esempio n. 8
0
 private object InitializerValueOf(EnumMember enumMember, EnumDefinition enumType)
 {
     return Convert.ChangeType(((IntegerLiteralExpression) enumMember.Initializer).Value,
                               GetEnumUnderlyingType(enumType));
 }
Esempio n. 9
0
        //throws RecognitionException, TokenStreamException
        protected void enum_member(
            TypeMemberCollection container
            )
        {
            IToken  id = null;

                EnumMember em = null;
                IntegerLiteralExpression initializer = null;
                bool negative = false;

            try {      // for error handling
            attributes();
            id = LT(1);
            match(ID);
            {
                switch ( LA(1) )
                {
                case ASSIGN:
                {
                    match(ASSIGN);
                    {
                        if ((LA(1)==SUBTRACT) && (LA(2)==SUBTRACT||LA(2)==LONG||LA(2)==INT))
                        {
                            match(SUBTRACT);
                            if (0==inputState.guessing)
                            {
                                negative = true;
                            }
                        }
                        else if ((LA(1)==SUBTRACT||LA(1)==LONG||LA(1)==INT) && (tokenSet_42_.member(LA(2)))) {
                        }
                        else
                        {
                            throw new NoViableAltException(LT(1), getFilename());
                        }

                    }
                    initializer=integer_literal();
                    break;
                }
                case EOF:
                case EOS:
                case NEWLINE:
                {
                    break;
                }
                default:
                {
                    throw new NoViableAltException(LT(1), getFilename());
                }
                 }
            }
            if (0==inputState.guessing)
            {

                        em = new EnumMember(SourceLocationFactory.ToLexicalInfo(id));
                        em.Name = id.getText();
                        em.Initializer = initializer;
                        if (negative && null != initializer)
                        {
                            initializer.Value *= -1;
                        }
                        AddAttributes(em.Attributes);
                        container.Add(em);

            }
            eos();
            docstring(em);
            }
            catch (RecognitionException ex)
            {
            if (0 == inputState.guessing)
            {
                reportError(ex);
                recover(ex,tokenSet_43_);
            }
            else
            {
                throw ex;
            }
            }
        }
Esempio n. 10
0
 public static CompilerError EnumMemberMustBeConstant(EnumMember member)
 {
     return Instantiate("BCE0170", member, member.FullName);
 }
Esempio n. 11
0
			public override void OnEnumMember(EnumMember node)
			{
				_emitter.EmitFieldAttributes(node, this._knownTypes);
			}
Esempio n. 12
0
        public override void LeaveEnumMember(EnumMember node)
        {
            if (node.Initializer.NodeType == NodeType.IntegerLiteralExpression)
                return;

            IType type = node.Initializer.ExpressionType;
            if (null != type && (TypeSystemServices.IsIntegerNumber(type) || type.IsEnum))
            {
                object val = GetLiteralValue(node.Initializer);
                if (null != val && val != Error.Default)
                    node.Initializer = new IntegerLiteralExpression(Convert.ToInt64(val));
            }
            return;
        }
Esempio n. 13
0
 public override void OnEnumMember(EnumMember node)
 {
     WriteAttributes(node.Attributes, true);
     WriteIndented(node.Name);
     if (null != node.Initializer)
     {
         WriteOperator(" = ");
         Visit(node.Initializer);
     }
     WriteLine();
 }
Esempio n. 14
0
		override public object Clone()
		{
		
			EnumMember clone = new EnumMember();
			clone._lexicalInfo = _lexicalInfo;
			clone._endSourceLocation = _endSourceLocation;
			clone._documentation = _documentation;
			clone._isSynthetic = _isSynthetic;
			clone._entity = _entity;
			if (_annotations != null) clone._annotations = (Hashtable)_annotations.Clone();
			clone._modifiers = _modifiers;
			clone._name = _name;
			if (null != _attributes)
			{
				clone._attributes = _attributes.Clone() as AttributeCollection;
				clone._attributes.InitializeParent(clone);
			}
			if (null != _initializer)
			{
				clone._initializer = _initializer.Clone() as Expression;
				clone._initializer.InitializeParent(clone);
			}
			return clone;


		}
        public void enum_member(EnumDefinition container)
        {
            try
            {
                IntegerLiteralExpression expression;
                switch (this.LA(1))
                {
                    case 0x63:
                        this.attributes();
                        break;

                    case 12:
                    case 0x10:
                    case 0x21:
                    case 0x3b:
                        break;

                    default:
                        throw new NoViableAltException(this.LT(1), this.getFilename());
                }
                IToken token = this.identifier();
                switch (this.LA(1))
                {
                    case 0x4e:
                        this.match(0x4e);
                        expression = this.integer_literal();
                        break;

                    case 0x3e:
                    case 0x43:
                        break;

                    default:
                        throw new NoViableAltException(this.LT(1), this.getFilename());
                }
                if (base.inputState.guessing == 0)
                {
                    EnumMember member;
                    EnumMember member1 = member = new EnumMember(ToLexicalInfo(token));
                    member.set_Name(token.getText());
                    member.set_Initializer(expression);
                    EnumMember node = member;
                    this.FlushAttributes(node);
                    container.get_Members().Add(node);
                }
            }
            catch (RecognitionException exception)
            {
                if (base.inputState.guessing != 0)
                {
                    throw;
                }
                this.reportError(exception);
                this.recover(exception, tokenSet_40_);
            }
        }