示例#1
0
        public override void VisitAttributeMetaDeclarationBlock(AttributeMetaDeclarationBlock a)
        {
            switch (CheckCondition(a.AttributeOrCondition))
            {
            case 1:
                if (a.OptionalElseBlock != null)
                {
                    invalidConditionalCodeRegions.Add(a.OptionalElseBlock);
                }
                break;

            case -1:
                invalidConditionalCodeRegions.Add(a);
                break;
            }

            base.VisitAttributeMetaDeclarationBlock(a);
        }
		public virtual void Visit(AttributeMetaDeclarationBlock attributeMetaDeclarationBlock)
		{
			Visit((AttributeMetaDeclaration)attributeMetaDeclarationBlock);
			VisitMetaBlock(attributeMetaDeclarationBlock);
		}
示例#3
0
        IMetaDeclarationBlock AttributeBlock(DBlockNode module)
        {
            int popCount = DeclarationAttributes.Count;

            /*
             * If there are attributes given, put their references into the meta block.
             * Also, pop them from the declarationAttributes stack on to the block attributes so they will be assigned to all child items later on.
             */

            IMetaDeclarationBlock metaDeclBlock;

            if (popCount != 0)
                metaDeclBlock = new AttributeMetaDeclarationBlock(DeclarationAttributes.ToArray()) { BlockStartLocation = la.Location };
            else
                metaDeclBlock = new MetaDeclarationBlock { BlockStartLocation = la.Location };

            while (DeclarationAttributes.Count > 0)
                BlockAttributes.Push(DeclarationAttributes.Pop());

            ClassBody(module, true, false);

            // Pop the previously pushed attributes back off the stack
            for (int i = popCount; i > 0; i--)
                BlockAttributes.Pop();

            // Store the meta block
            metaDeclBlock.EndLocation = t.EndLocation;
            if(module!=null)
                module.Add(metaDeclBlock);
            return metaDeclBlock;
        }
 public virtual void VisitAttributeMetaDeclarationBlock(AttributeMetaDeclarationBlock m)
 {
     VisitAttributeMetaDeclaration(m);
     VisitIMetaBlock(m);
 }
		public override void Visit(AttributeMetaDeclarationBlock attributeMetaDeclarationBlock)
		{
			base.Visit(attributeMetaDeclarationBlock);
		}
示例#6
0
		IMetaDeclarationBlock AttributeBlock(DBlockNode module)
		{
			/*
			 * If there are attributes given, put their references into the meta block.
			 * Also, pop them from the declarationAttributes stack on to the block attributes so they will be assigned to all child items later on.
			 */

			IMetaDeclarationBlock metaDeclBlock;

			if (DeclarationAttributes.Count != 0)
				metaDeclBlock = new AttributeMetaDeclarationBlock(DeclarationAttributes.ToArray()) { BlockStartLocation = la.Location };
			else
				metaDeclBlock = new MetaDeclarationBlock { BlockStartLocation = la.Location };

			var stk_backup = BlockAttributes;
			BlockAttributes = new Stack<DAttribute>();
			foreach (var attr in stk_backup)
			{
				if (attr is Modifier)
				{
					switch ((attr as Modifier).Token)
					{
						case DTokens.Virtual:
						case DTokens.Final:
							continue;
					}
				}
				else if (attr is BuiltInAtAttribute)
				{
					switch ((attr as BuiltInAtAttribute).Kind)
					{
						case BuiltInAtAttribute.BuiltInAttributes.Safe:
						case BuiltInAtAttribute.BuiltInAttributes.System:
						case BuiltInAtAttribute.BuiltInAttributes.Trusted:
							continue;
					}
				}

				BlockAttributes.Push(attr);
			}


			while (DeclarationAttributes.Count > 0)
				BlockAttributes.Push(DeclarationAttributes.Pop());

			ClassBody(module, true, false);

			BlockAttributes = stk_backup;

			// Store the meta block
			metaDeclBlock.EndLocation = t.EndLocation;
			if(module!=null)
				module.Add(metaDeclBlock);
			return metaDeclBlock;
		}
 public ulong VisitAttributeMetaDeclarationBlock(AttributeMetaDeclarationBlock m)
 {
     return(1002049);
 }
 public override void Visit(AttributeMetaDeclarationBlock attributeMetaDeclarationBlock)
 {
     base.Visit(attributeMetaDeclarationBlock);
 }