コード例 #1
0
ファイル: SourceMapper.cs プロジェクト: gpduck/ScriptMap
    public System.Object VisitCatchClause(System.Management.Automation.Language.CatchClauseAst catchClauseAst)
    {
        IScriptExtent mappedExtent = MapExtent(catchClauseAst.Extent);

        LinkedList <TypeConstraintAst> mappedCatchTypes = new LinkedList <TypeConstraintAst>();

        foreach (TypeConstraintAst tc in catchClauseAst.CatchTypes)
        {
            mappedCatchTypes.AddLast((TypeConstraintAst)VisitTypeConstraint(tc));
        }
        StatementBlockAst mappedBody = (StatementBlockAst)VisitStatementBlock(catchClauseAst.Body);


        return(new CatchClauseAst(mappedExtent, mappedCatchTypes, mappedBody));
    }
コード例 #2
0
 public override AstVisitAction VisitTryStatement(TryStatementAst tryStatementAst)
 {
     if (tryStatementAst.CatchClauses.Count > 1)
     {
         for (int i = 0; i < (tryStatementAst.CatchClauses.Count - 1); i++)
         {
             CatchClauseAst ast = tryStatementAst.CatchClauses[i];
             for (int j = i + 1; j < tryStatementAst.CatchClauses.Count; j++)
             {
                 CatchClauseAst ast2 = tryStatementAst.CatchClauses[j];
                 if (ast.IsCatchAll)
                 {
                     this._parser.ReportError(Parser.Before(ast2.Extent), ParserStrings.EmptyCatchNotLast, new object[0]);
                     break;
                 }
                 if (!ast2.IsCatchAll)
                 {
                     foreach (TypeConstraintAst ast3 in ast.CatchTypes)
                     {
                         Type reflectionType = ast3.TypeName.GetReflectionType();
                         if (reflectionType != null)
                         {
                             foreach (TypeConstraintAst ast4 in ast2.CatchTypes)
                             {
                                 Type type2 = ast4.TypeName.GetReflectionType();
                                 if ((type2 != null) && ((reflectionType == type2) || type2.IsSubclassOf(reflectionType)))
                                 {
                                     this._parser.ReportError(ast4.Extent, ParserStrings.ExceptionTypeAlreadyCaught, new object[] { type2.FullName });
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     return(AstVisitAction.Continue);
 }
コード例 #3
0
 /// <summary/>
 public virtual object VisitCatchClause(CatchClauseAst catchClauseAst)
 {
     return _decorated.VisitCatchClause(catchClauseAst);
 }
コード例 #4
0
ファイル: AstVisitor.cs プロジェクト: 40a/PowerShell
 public override AstVisitAction VisitCatchClause(CatchClauseAst ast) { return CheckParent(ast); }
コード例 #5
0
 public object VisitCatchClause(CatchClauseAst catchClauseAst)
 {
     return(false);
 }
コード例 #6
0
 public object VisitCatchClause(CatchClauseAst catchClauseAst)
 {
     throw PSTraceSource.NewArgumentException("ast");
 }
コード例 #7
0
 public override AstVisitAction VisitCatchClause(CatchClauseAst ast)
 {
     return(Check(ast));
 }
コード例 #8
0
ファイル: AstVisitor.cs プロジェクト: JamesTryand/Pash2
 public virtual AstVisitAction VisitCatchClause(CatchClauseAst catchClauseAst)
 {
     return AstVisitAction.Continue;
 }
コード例 #9
0
ファイル: AstSearcher.cs プロジェクト: nickchal/pash
 public override AstVisitAction VisitCatchClause(CatchClauseAst ast)
 {
     return this.Check(ast);
 }
コード例 #10
0
 public override AstVisitAction VisitCatchClause(CatchClauseAst catchClauseAst)
 {
     return(AstVisitAction.Continue);
 }
コード例 #11
0
 public object VisitCatchClause(CatchClauseAst catchClauseAst) { throw new UnexpectedElementException(); }
コード例 #12
0
ファイル: SemanticChecks.cs プロジェクト: dfinke/powershell
        public override AstVisitAction VisitCatchClause(CatchClauseAst catchClauseAst)
        {
            Diagnostics.Assert(FoundError, "VisitTryStatement should have reported an error");

            return AstVisitAction.Continue;
        }
コード例 #13
0
 /// <summary/>
 public virtual AstVisitAction VisitCatchClause(CatchClauseAst catchClauseAst) => DefaultVisit(catchClauseAst);
コード例 #14
0
ファイル: Compiler.cs プロジェクト: nickchal/pash
 public object VisitCatchClause(CatchClauseAst catchClauseAst)
 {
     return null;
 }
コード例 #15
0
ファイル: ConstantValues.cs プロジェクト: 40a/PowerShell
 public object VisitCatchClause(CatchClauseAst catchClauseAst) { return AutomationNull.Value; }
コード例 #16
0
ファイル: ExecutionVisitor.cs プロジェクト: JayBazuzi/Pash
 public override AstVisitAction VisitCatchClause(CatchClauseAst catchClauseAst)
 {
     throw new NotImplementedException(); //VisitCatchClause(catchClauseAst);
 }
コード例 #17
0
ファイル: SafeValues.cs プロジェクト: 40a/PowerShell
 public object VisitCatchClause(CatchClauseAst catchClauseAst) { throw PSTraceSource.NewArgumentException("ast"); }
コード例 #18
0
 public object VisitCatchClause(CatchClauseAst catchClauseAst)
 {
     catchClauseAst.Body.Accept(this);
     return(null);
 }
コード例 #19
0
ファイル: Compiler.cs プロジェクト: 40a/PowerShell
 public object VisitCatchClause(CatchClauseAst catchClauseAst)
 {
     Diagnostics.Assert(false, "the catch body is visited directly from VisitTryStatement.");
     return null;
 }
コード例 #20
0
 /// <summary/>
 public virtual object VisitCatchClause(CatchClauseAst catchClauseAst)
 {
     return(null);
 }
コード例 #21
0
 public override AstVisitAction VisitCatchClause(CatchClauseAst catchClauseAst)
 {
     return AstVisitAction.Continue;
 }
コード例 #22
0
 public object VisitCatchClause(CatchClauseAst catchClauseAst)
 {
     return false;
 }
コード例 #23
0
ファイル: VariableAnalysis.cs プロジェクト: nickchal/pash
 public object VisitCatchClause(CatchClauseAst catchClauseAst)
 {
     catchClauseAst.Body.Accept(this);
     return null;
 }
コード例 #24
0
 /// <summary/>
 public virtual AstVisitAction VisitCatchClause(CatchClauseAst catchClauseAst)
 {
     return(AstVisitAction.Continue);
 }
コード例 #25
0
        /// <summary>
        /// Visit catch clause
        /// </summary>
        /// <param name="catchClauseAst"></param>
        /// <returns></returns>
        public object VisitCatchClause(CatchClauseAst catchClauseAst)
        {
            if (catchClauseAst == null) return null;

            catchClauseAst.Body.Visit(this.Decorator);
            return null;
        }
コード例 #26
0
 public object VisitCatchClause(CatchClauseAst catchClauseAst)
 {
     return(AutomationNull.Value);
 }
コード例 #27
0
 public object VisitCatchClause(CatchClauseAst catchClauseAst)
 {
     throw new NotImplementedException();
 }