예제 #1
0
        public NamedBlockAst(IScriptExtent extent, TokenKind blockName, StatementBlockAst statementBlock, bool unnamed) : base(extent)
        {
            if (!blockName.HasTrait(TokenFlags.ScriptBlockBlockName) || (unnamed && ((blockName == TokenKind.Begin) || (blockName == TokenKind.Dynamicparam))))
            {
                throw PSTraceSource.NewArgumentException("blockName");
            }
            if (statementBlock == null)
            {
                throw PSTraceSource.NewArgumentNullException("statementBlock");
            }
            this.Unnamed   = unnamed;
            this.BlockKind = blockName;
            ReadOnlyCollection <StatementAst> statements = statementBlock.Statements;

            this.Statements = statements;
            foreach (StatementAst ast in statements)
            {
                ast.ClearParent();
            }
            base.SetParents((IEnumerable <Ast>)statements);
            ReadOnlyCollection <TrapStatementAst> traps = statementBlock.Traps;

            if ((traps != null) && traps.Any <TrapStatementAst>())
            {
                this.Traps = traps;
                foreach (TrapStatementAst ast2 in traps)
                {
                    ast2.ClearParent();
                }
                base.SetParents((IEnumerable <Ast>)traps);
            }
            if (!unnamed)
            {
                InternalScriptExtent extent2 = statementBlock.Extent as InternalScriptExtent;
                if (extent2 != null)
                {
                    this.OpenCurlyExtent  = new InternalScriptExtent(extent2.PositionHelper, extent2.StartOffset, extent2.StartOffset + 1);
                    this.CloseCurlyExtent = new InternalScriptExtent(extent2.PositionHelper, extent2.EndOffset - 1, extent2.EndOffset);
                }
            }
        }
예제 #2
0
 public NamedBlockAst(IScriptExtent extent, TokenKind blockName, StatementBlockAst statementBlock, bool unnamed) : base(extent)
 {
     if (!blockName.HasTrait(TokenFlags.ScriptBlockBlockName) || (unnamed && ((blockName == TokenKind.Begin) || (blockName == TokenKind.Dynamicparam))))
     {
         throw PSTraceSource.NewArgumentException("blockName");
     }
     if (statementBlock == null)
     {
         throw PSTraceSource.NewArgumentNullException("statementBlock");
     }
     this.Unnamed = unnamed;
     this.BlockKind = blockName;
     ReadOnlyCollection<StatementAst> statements = statementBlock.Statements;
     this.Statements = statements;
     foreach (StatementAst ast in statements)
     {
         ast.ClearParent();
     }
     base.SetParents((IEnumerable<Ast>) statements);
     ReadOnlyCollection<TrapStatementAst> traps = statementBlock.Traps;
     if ((traps != null) && traps.Any<TrapStatementAst>())
     {
         this.Traps = traps;
         foreach (TrapStatementAst ast2 in traps)
         {
             ast2.ClearParent();
         }
         base.SetParents((IEnumerable<Ast>) traps);
     }
     if (!unnamed)
     {
         InternalScriptExtent extent2 = statementBlock.Extent as InternalScriptExtent;
         if (extent2 != null)
         {
             this.OpenCurlyExtent = new InternalScriptExtent(extent2.PositionHelper, extent2.StartOffset, extent2.StartOffset + 1);
             this.CloseCurlyExtent = new InternalScriptExtent(extent2.PositionHelper, extent2.EndOffset - 1, extent2.EndOffset);
         }
     }
 }