Пример #1
0
        private void CompleteReturnStatement(ReturnStatement returnStatement)
        {
            if (returnStatement.Expression != null)
            {
                return;
            }

            MethodDeclaration method = returnStatement.Ancestor(NodeKind.MethodDeclaration) as MethodDeclaration;

            if (method != null && method.Type != null && method.Type.Kind == NodeKind.UnionType && ((UnionType)method.Type).HasNullType)
            {
                returnStatement.Expression = NodeHelper.CreateNode(NodeKind.NullKeyword);
            }
        }
Пример #2
0
        public CSharpSyntaxNode Convert(ReturnStatement node)
        {
            if (node.Expression == null)
            {
                return(SyntaxFactory.ReturnStatement());
            }

            // return default(T); for generic return type
            if (node.Expression.Kind == NodeKind.NullKeyword)
            {
                MethodDeclaration method = node.Ancestor(NodeKind.MethodDeclaration) as MethodDeclaration;
                if (method != null && method.IsGenericType)
                {
                    return(SyntaxFactory.ReturnStatement(SyntaxFactory.DefaultExpression(SyntaxFactory.IdentifierName(method.Type.Text))));
                }
            }

            return(SyntaxFactory.ReturnStatement(node.Expression.ToCsNode <ExpressionSyntax>()));
        }