public void MethodParameterNullAnnotator_WithEmptyList_ReturnsInput() { var(_, methodSyntax) = CompiledSourceFileProvider.CompileMethod( "void T (object o1, object o2, string s1, string s2, int i1, double d1) {}"); var rewriter = new MethodParameterNullAnnotator(new ParameterSyntax[0]); var rewritten = rewriter.Visit(methodSyntax); Assert.That(rewritten, Is.EqualTo(methodSyntax)); }
public void CastExpressionNullAnnotator_DoesNotAnnotateNonNullableCast(string castExpression) { var source = string.Format(c_castTemplate, castExpression); var(semanticModel, method) = CompiledSourceFileProvider.CompileMethod(source); var stmt = (method.Body !.Statements.First() as LocalDeclarationStatementSyntax) !; var castExpressionSyntax = (stmt.Declaration.Variables.First().Initializer !.Value as CastExpressionSyntax) !; var rewriter = new CastExpressionNullAnnotator(semanticModel); var rewritten = rewriter.Visit(castExpressionSyntax); Assert.That(rewritten, Is.InstanceOf <CastExpressionSyntax>()); Assert.That(rewritten, Is.EqualTo(castExpressionSyntax)); }
public void MethodParameterNullAnnotator_AnnotatesCanBeNullParameters() { var(_, methodSyntax) = CompiledSourceFileProvider.CompileMethod( "void T (object o1, [CanBeNull] object o2, string s1, [CanBeNull] string s2, int i1, double d1) {}"); var rewriter = new MethodParameterNullAnnotator(new ParameterSyntax[0]); var rewritten = rewriter.Visit(methodSyntax); Assert.That(rewritten, Is.InstanceOf <MethodDeclarationSyntax>()); var rewrittenMethod = (rewritten as MethodDeclarationSyntax) !; Assert.That(rewrittenMethod.ParameterList.Parameters[0], Is.EqualTo(methodSyntax.ParameterList.Parameters[0]).Using <SyntaxNode>((p1, p2) => p1.IsEquivalentTo(p2))); Assert.That(rewrittenMethod.ParameterList.Parameters[2], Is.EqualTo(methodSyntax.ParameterList.Parameters[2]).Using <SyntaxNode>((p1, p2) => p1.IsEquivalentTo(p2))); Assert.That(rewrittenMethod.ParameterList.Parameters[4], Is.EqualTo(methodSyntax.ParameterList.Parameters[4]).Using <SyntaxNode>((p1, p2) => p1.IsEquivalentTo(p2))); Assert.That(rewrittenMethod.ParameterList.Parameters[5], Is.EqualTo(methodSyntax.ParameterList.Parameters[5]).Using <SyntaxNode>((p1, p2) => p1.IsEquivalentTo(p2))); Assert.That(rewrittenMethod.ParameterList.Parameters[1].Type, Is.InstanceOf <NullableTypeSyntax>()); Assert.That(rewrittenMethod.ParameterList.Parameters[3].Type, Is.InstanceOf <NullableTypeSyntax>()); }
public void MethodParameterNullAnnotator_WithNullableList_AnnotatesParameters() { var(_, methodSyntax) = CompiledSourceFileProvider.CompileMethod( "void T (object o1, object o2, string s1, string s2, int i1, double d1) {}"); var nullableParameter = methodSyntax.ParameterList.Parameters.Where(parameter => parameter.Identifier.ToString().Contains("2")); var rewriter = new MethodParameterNullAnnotator(nullableParameter.ToList()); var rewritten = rewriter.Visit(methodSyntax); Assert.That(rewritten, Is.InstanceOf <MethodDeclarationSyntax>()); var rewrittenMethod = (rewritten as MethodDeclarationSyntax) !; Assert.That(rewrittenMethod.ParameterList.Parameters[0], Is.EqualTo(methodSyntax.ParameterList.Parameters[0]).Using <SyntaxNode>((p1, p2) => p1.IsEquivalentTo(p2))); Assert.That(rewrittenMethod.ParameterList.Parameters[2], Is.EqualTo(methodSyntax.ParameterList.Parameters[2]).Using <SyntaxNode>((p1, p2) => p1.IsEquivalentTo(p2))); Assert.That(rewrittenMethod.ParameterList.Parameters[4], Is.EqualTo(methodSyntax.ParameterList.Parameters[4]).Using <SyntaxNode>((p1, p2) => p1.IsEquivalentTo(p2))); Assert.That(rewrittenMethod.ParameterList.Parameters[5], Is.EqualTo(methodSyntax.ParameterList.Parameters[5]).Using <SyntaxNode>((p1, p2) => p1.IsEquivalentTo(p2))); Assert.That(rewrittenMethod.ParameterList.Parameters[1].Type, Is.InstanceOf <NullableTypeSyntax>()); Assert.That(rewrittenMethod.ParameterList.Parameters[3].Type, Is.InstanceOf <NullableTypeSyntax>()); }