public void LocalDeclarationNullAnnotator_DoesAnnotateDeclarationsToReferenceTypes(string declarationSource)
        {
            var(model, syntax) = CompiledSourceFileProvider.CompileStatement(declarationSource);
            var rewriter = new LocalDeclarationNullAnnotator(model);

            var rewritten = rewriter.Visit(syntax) as LocalDeclarationStatementSyntax;

            Assert.That(rewritten, Is.Not.Null);
            Assert.That(rewritten !.Declaration.Type, Is.InstanceOf <NullableTypeSyntax>());
        }
        public void LocalDeclarationNullAnnotator_DoesNotAnnotateDeclarationsToVar(string declarationSource)
        {
            var(model, syntax) = CompiledSourceFileProvider.CompileStatement(declarationSource);
            var rewriter = new LocalDeclarationNullAnnotator(model);

            var rewritten = rewriter.Visit(syntax) as LocalDeclarationStatementSyntax;

            Assert.That(rewritten, Is.Not.Null);
            Assert.That(rewritten, Is.EqualTo(syntax));
        }
        public void LocalDeclarationNullAnnotator_DoesAnnotateDeclarationsCallingNullableMethods(string declarationSource)
        {
            var classContentTemplate =
                @"public string? returnNull() {
            return null;
          }
          public void TestMethod() {" +
                $"\r\n  {declarationSource}\r\n" +
                "}\r\n";

            var(semanticModel, syntaxNode) = CompiledSourceFileProvider.CompileInClass("TestClass", classContentTemplate);
            var testMethod  = syntaxNode.DescendantNodes().OfType <MethodDeclarationSyntax>().Single(m => m.Identifier.ToString() == "TestMethod");
            var declaration = testMethod.Body !.Statements.First();
            var rewriter    = new LocalDeclarationNullAnnotator(semanticModel);

            var rewritten = rewriter.Visit(declaration) as LocalDeclarationStatementSyntax;

            Assert.That(rewritten, Is.Not.Null);
            Assert.That(rewritten !.Declaration.Type, Is.InstanceOf <NullableTypeSyntax>());
        }