示例#1
0
        CatchBlockSyntax ConvertCatchClause(int index, CSS.CatchClauseSyntax catchClause)
        {
            var statements = ConvertBlock(catchClause.Block);

            if (catchClause.Declaration == null)
            {
                return(SyntaxFactory.CatchBlock(SyntaxFactory.CatchStatement(), statements));
            }
            var    type = (TypeSyntax)catchClause.Declaration.Type.Accept(_nodesVisitor);
            string simpleTypeName;

            if (type is QualifiedNameSyntax)
            {
                simpleTypeName = ((QualifiedNameSyntax)type).Right.ToString();
            }
            else
            {
                simpleTypeName = type.ToString();
            }
            return(SyntaxFactory.CatchBlock(
                       SyntaxFactory.CatchStatement(
                           SyntaxFactory.IdentifierName(SyntaxTokenExtensions.IsKind(catchClause.Declaration.Identifier, CS.SyntaxKind.None) ? SyntaxFactory.Identifier($"__unused{simpleTypeName}{index + 1}__") : _commonConversions.ConvertIdentifier(catchClause.Declaration.Identifier)),
                           SyntaxFactory.SimpleAsClause(type),
                           catchClause.Filter == null ? null : SyntaxFactory.CatchFilterClause((ExpressionSyntax)catchClause.Filter.FilterExpression.Accept(_nodesVisitor))
                           ), statements
                       ));
        }