예제 #1
0
        /// <summary>
        ///   Normalizes the <paramref name="declaration" />.
        /// </summary>
        public override SyntaxNode VisitMethodDeclaration(MethodDeclarationSyntax declaration)
        {
            var originalDeclaration = declaration;
            var methodSymbol        = declaration.GetMethodSymbol(SemanticModel);

            if (!methodSymbol.ContainingType.IsFaultEffect(SemanticModel) || !methodSymbol.IsOverride)
            {
                return(declaration);
            }

            var memberAccess = Syntax.MemberAccessExpression(Syntax.BaseExpression(), methodSymbol.Name);
            var invocation   = Syntax.InvocationExpression(memberAccess, CreateInvocationArguments(methodSymbol.Parameters));

            declaration = declaration.WithBody(CreateBody(methodSymbol, declaration.Body, invocation));
            return(declaration.EnsureLineCount(originalDeclaration));
        }