Exemplo n.º 1
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 Visit(MetaDeclarationBlock metaDeclarationBlock)
		{
			VisitMetaBlock(metaDeclarationBlock);
		}
Exemplo n.º 3
0
 public virtual void VisitMetaDeclarationBlock(MetaDeclarationBlock m)
 {
     VisitIMetaBlock(m);
 }
		public override void Visit(MetaDeclarationBlock metaDeclarationBlock)
		{
			base.Visit(metaDeclarationBlock);
		}
Exemplo n.º 5
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;
		}
Exemplo n.º 6
0
 public ulong VisitMetaDeclarationBlock(MetaDeclarationBlock m)
 {
     return(1002017);
 }
Exemplo n.º 7
0
 public override void Visit(MetaDeclarationBlock metaDeclarationBlock)
 {
     base.Visit(metaDeclarationBlock);
 }