public virtual CatchClauseAst VisitCatchClause(CatchClauseAst catchClauseAst)
 {
     return(new CatchClauseAst(
                catchClauseAst.Extent,
                catchClauseAst.CatchTypes?.RewriteAll <TypeConstraintAst>(this, SyntaxKind.TypeConstraint),
                catchClauseAst.Body.Rewrite(this, SyntaxKind.StatementBlock)));
 }
        public object VisitCatchClause(CatchClauseAst catchClauseAst)
        {
            var catchTypes = VisitAst(catchClauseAst.CatchTypes);
            var body       = VisitAst(catchClauseAst.Body);

            return(new CatchClauseAst(catchClauseAst.Extent, catchTypes, body));
        }
 public static CatchClauseAst Update(
     this CatchClauseAst ast,
     IEnumerable <TypeConstraintAst> catchTypes = null,
     IEnumerable <StatementAst> statements      = null)
 {
     return(new CatchClauseAst(
                ast.Extent,
                catchTypes?.CloneAll() ?? ast.CatchTypes?.CloneAll(),
                ast.Body?.Update(statements)));
 }
Beispiel #4
0
 public override object VisitCatchClause(CatchClauseAst catchClauseAst)
 {
     script_.Write("catch");
     if (catchClauseAst.CatchTypes.Count > 0)
     {
         script_.Write(" ");
         script_.Write(string.Join(",", "[" + catchClauseAst.CatchTypes + "]"));
     }
     script_.Write("{");
     VisitElement(catchClauseAst.Body);
     script_.Write("}");
     return(catchClauseAst);
 }
Beispiel #5
0
        public override AstVisitAction VisitCatchClause(CatchClauseAst catchClauseAst)
        {
            var exceptionText = "";

            if (!catchClauseAst.IsCatchAll)
            {
                exceptionText = $"of type '{string.Join("', '", catchClauseAst.CatchTypes.Select(c => c.TypeName.Name))}' ";
            }

            explanations.Add(
                new Explanation()
            {
                CommandName     = $"Catch block, belongs to Try statement",
                HelpResult      = HelpTableQuery("about_try_catch_finally"),
                Description     = $"Executed when an exception {exceptionText}is thrown in the Try {{}} block.",
                TextToHighlight = "catch"
            }.AddDefaults(catchClauseAst, explanations));

            return(AstVisitAction.Continue);
        }
        /// <summary>
        /// AnalyzeScript: Analyze the script to check if any empty catch block is used.
        /// </summary>
        public IEnumerable <DiagnosticRecord> AnalyzeScript(Ast ast, string fileName)
        {
            if (ast == null)
            {
                throw new ArgumentNullException(Strings.NullAstErrorMessage);
            }

            // Finds all CommandAsts.
            IEnumerable <Ast> foundAsts = ast.FindAll(testAst => testAst is CatchClauseAst, true);

            // Iterates all CatchClauseAst and check the statements count.
            foreach (Ast foundAst in foundAsts)
            {
                CatchClauseAst catchAst = (CatchClauseAst)foundAst;

                if (catchAst.Body.Statements.Count == 0)
                {
                    yield return(new DiagnosticRecord(string.Format(CultureInfo.CurrentCulture, Strings.AvoidEmptyCatchBlockError),
                                                      catchAst.Extent, GetName(), DiagnosticSeverity.Warning, fileName));
                }
            }
        }
        public override AstVisitAction VisitCatchClause(CatchClauseAst catchClauseAst)
        {
            var body  = VisitSyntaxNode(catchClauseAst.Body);
            var block = body as Block;

            if (block == null)
            {
                block = new Block(body);
            }

            var type = catchClauseAst.CatchTypes.FirstOrDefault();
            CatchDeclaration declaration = null;

            if (type != null)
            {
                var myType = type.TypeName.Name;
                declaration = new CatchDeclaration(myType.ToString(), null);
            }

            _currentNode = new Catch(declaration, block);

            return(AstVisitAction.SkipChildren);
        }
Beispiel #8
0
 /// <summary/>
 public virtual AstVisitAction VisitCatchClause(CatchClauseAst catchClauseAst) => DefaultVisit(catchClauseAst);
Beispiel #9
0
 public override AstVisitAction VisitCatchClause(CatchClauseAst catchClauseAst)
 {
     throw new NotImplementedException(); //VisitCatchClause(catchClauseAst);
 }
 public object VisitCatchClause(CatchClauseAst catchClauseAst)
 {
     throw PSTraceSource.NewArgumentException("ast");
 }
 public override AstVisitAction VisitCatchClause(CatchClauseAst catchClauseAst)
 {
     return(Visit(catchClauseAst));
 }
Beispiel #12
0
 public override CatchClauseAst VisitCatchClause(CatchClauseAst catchClauseAst)
 => VisitOther(base.VisitCatchClause(catchClauseAst));
 public virtual TResult VisitCatchClause(CatchClauseAst catchClauseAst) => default(TResult);
Beispiel #14
0
 // TryStatementAst Extension Methods
 // New Methods Available:
 // - CreateNodeFromAST(NodeDepth, NodePosition) => Creates a Node
 // - CreateChildNodes ($item in $collection) {} => Creates Child Nodes
 public static CatchNode CreateNodeFromAst(this CatchClauseAst _ast, int _depth, int _position, Node _parent)
 {
     return(new CatchNode(_ast, _depth, _position, _parent));
 }
 object ICustomAstVisitor.VisitCatchClause(CatchClauseAst catchClauseAst) => VisitCatchClause(catchClauseAst);
Beispiel #16
0
 public object VisitCatchClause(CatchClauseAst catchClauseAst)
 {
     Console.WriteLine("Visited an CatchClauseAst.");
     return(catchClauseAst);
 }
 public object VisitCatchClause(CatchClauseAst catchClauseAst) => null;
 object ICustomAstVisitor.VisitCatchClause(CatchClauseAst catchClauseAst)
 => ProcessRewriter(VisitCatchClause, catchClauseAst);
Beispiel #19
0
 public object VisitCatchClause(CatchClauseAst catchClauseAst)
 {
     throw new UnexpectedElementException();
 }
Beispiel #20
0
 public object VisitCatchClause(CatchClauseAst catchClauseAst)
 {
     throw new NotImplementedException();
 }
Beispiel #21
0
 public override AstVisitAction VisitCatchClause(CatchClauseAst ast)
 {
     return(AstVisitAction.Continue);
 }
Beispiel #22
0
 public override AstVisitAction VisitCatchClause(CatchClauseAst catchClauseAst)
 {
     Console.WriteLine("Visited an CatchClauseAst.");
     Console.WriteLine("    " + catchClauseAst.ToString().Replace(Environment.NewLine, Environment.NewLine + "    "));
     return(AstVisitAction.Continue);
 }
Beispiel #23
0
 public virtual object VisitCatchClause(CatchClauseAst catchClauseAst)
 {
     VisitElement(catchClauseAst.Body);
     return(catchClauseAst);
 }
        public object VisitCatchClause(CatchClauseAst catchClauseAst)
        {
            var newBody = VisitElement(catchClauseAst.Body);

            return(new CatchClauseAst(catchClauseAst.Extent, catchClauseAst.CatchTypes, newBody));
        }
Beispiel #25
0
 public override AstVisitAction VisitCatchClause(CatchClauseAst ast)
 {
     return(Check(ast));
 }
Beispiel #26
0
 public object VisitCatchClause(CatchClauseAst catchClauseAst)
 {
     return(false);
 }
Beispiel #27
0
 public override AstVisitAction VisitCatchClause(CatchClauseAst ast)
 {
     return(DoNextAction(ast));
 }
Beispiel #28
0
 public static IEnumerable <Ast> GetChildAst(this CatchClauseAst _ast)
 {
     return(_ast.Body.FindAll(Args => Args is Ast && Args.Parent == _ast.Body, false));
 }
Beispiel #29
0
 public override AstVisitAction VisitCatchClause(CatchClauseAst catchClauseAst) => VisitAst(catchClauseAst);