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); } }
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>())); }