private static bool MayReturnNull(MethodDeclarationSyntax node, SemanticModel model) { return(!(NullUtilities.ReturnsVoid(node) || HasNullOrEmptyBody(node)) && (HasCanBeNullAttribute(node) || NullUtilities.ReturnsNull(node, model))); }
private bool GetterReturnsNull(PropertyDeclarationSyntax node) { var propertySymbol = _semanticModel.GetDeclaredSymbol(node); if (propertySymbol.GetMethod == null) { return(false); } var getter = propertySymbol.GetMethod; var getterSyntax = getter.DeclaringSyntaxReferences.FirstOrDefault()?.GetSyntax() as AccessorDeclarationSyntax; if (getterSyntax?.Body != null) { return(NullUtilities.ReturnsNull(getterSyntax.Body.Statements, _semanticModel)); } if (getterSyntax?.ExpressionBody != null) { return(NullUtilities.CanBeNull(getterSyntax.ExpressionBody.Expression, _semanticModel)); } return(false); }