From 2fd0b7aabc3272a2c3fa6f8c66d82507703ee122 Mon Sep 17 00:00:00 2001 From: tpodolak Date: Sat, 30 Jan 2021 14:46:14 +0100 Subject: [PATCH] [GH-157] - correct handling of CallInfo usages --- ....Analyzers.Benchmarks.Source.CSharp.csproj | 2 +- ...yzers.Benchmarks.Source.VisualBasic.vbproj | 2 +- libs/nsubstitute-4.2.2/NSubstitute.dll | Bin 0 -> 148992 bytes libs/nsubstitute-latest/NSubstitute.dll | Bin 0 -> 154112 bytes .../ReEntrantSetupCodeFixProvider.cs | 16 +--- .../DiagnosticAnalyzers/CallInfoCallFinder.cs | 5 +- .../AbstractReEntrantSetupCodeFixProvider.cs | 17 +++- .../Extensions/TypeInfoExtensions.cs | 5 ++ .../ReEntrantSetupCodeFixProvider.cs | 19 +--- .../DiagnosticAnalyzers/CallInfoCallFinder.cs | 5 +- ...bstitute.Analyzers.Tests.Benchmarks.csproj | 1 - .../CSharpProjectOptions.cs | 2 +- .../CSharpWorkspaceFactory.cs | 2 +- .../ReEntrantSetupCodeFixVerifier.cs | 11 ++- .../ReturnsAsExtensionMethodTests.cs | 82 +++++++++++++++++- .../ReturnsAsOrdinaryMethodTests.cs | 81 ++++++++++++++++- .../NSubstitute.Analyzers.Tests.CSharp.csproj | 5 +- .../CodeFixProviders/CodeFixVerifier.cs | 20 ++++- .../IReEntrantSetupCodeFixProviderVerifier.cs | 2 + .../NSubstitute.Analyzers.Tests.Shared.csproj | 1 - .../NSubstituteVersion.cs | 8 ++ .../RuntimeMetadataReference.cs | 10 ++- .../ReEntrantSetupCodeFixVerifier.cs | 7 +- .../ReturnsAsExtensionMethodTests.cs | 69 ++++++++++++++- .../ReturnsAsOrdinaryMethodTests.cs | 69 ++++++++++++++- .../ReturnsAsOrdinaryMethodTests.cs | 14 +-- ...stitute.Analyzers.Tests.VisualBasic.csproj | 6 +- .../VisualBasicProjectOptions.cs | 2 +- .../VisualBasicWorkspaceFactory.cs | 2 +- 29 files changed, 396 insertions(+), 69 deletions(-) create mode 100644 libs/nsubstitute-4.2.2/NSubstitute.dll create mode 100644 libs/nsubstitute-latest/NSubstitute.dll create mode 100644 tests/NSubstitute.Analyzers.Tests.Shared/NSubstituteVersion.cs diff --git a/benchmarks/NSubstitute.Analyzers.Benchmarks.Source.CSharp/NSubstitute.Analyzers.Benchmarks.Source.CSharp.csproj b/benchmarks/NSubstitute.Analyzers.Benchmarks.Source.CSharp/NSubstitute.Analyzers.Benchmarks.Source.CSharp.csproj index 6b89ebc8..3c6b8bcb 100644 --- a/benchmarks/NSubstitute.Analyzers.Benchmarks.Source.CSharp/NSubstitute.Analyzers.Benchmarks.Source.CSharp.csproj +++ b/benchmarks/NSubstitute.Analyzers.Benchmarks.Source.CSharp/NSubstitute.Analyzers.Benchmarks.Source.CSharp.csproj @@ -5,7 +5,7 @@ - + diff --git a/benchmarks/NSubstitute.Analyzers.Benchmarks.Source.VisualBasic/NSubstitute.Analyzers.Benchmarks.Source.VisualBasic.vbproj b/benchmarks/NSubstitute.Analyzers.Benchmarks.Source.VisualBasic/NSubstitute.Analyzers.Benchmarks.Source.VisualBasic.vbproj index 484c9cfb..85949f25 100644 --- a/benchmarks/NSubstitute.Analyzers.Benchmarks.Source.VisualBasic/NSubstitute.Analyzers.Benchmarks.Source.VisualBasic.vbproj +++ b/benchmarks/NSubstitute.Analyzers.Benchmarks.Source.VisualBasic/NSubstitute.Analyzers.Benchmarks.Source.VisualBasic.vbproj @@ -9,7 +9,7 @@ - + diff --git a/libs/nsubstitute-4.2.2/NSubstitute.dll b/libs/nsubstitute-4.2.2/NSubstitute.dll new file mode 100644 index 0000000000000000000000000000000000000000..22e729b34f51eac8a700c380db5c0127de8eee99 GIT binary patch literal 148992 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 literal 0 HcmV?d00001 diff --git a/src/NSubstitute.Analyzers.CSharp/CodeFixProviders/ReEntrantSetupCodeFixProvider.cs b/src/NSubstitute.Analyzers.CSharp/CodeFixProviders/ReEntrantSetupCodeFixProvider.cs index 3ae0a0a8..8a508fed 100644 --- a/src/NSubstitute.Analyzers.CSharp/CodeFixProviders/ReEntrantSetupCodeFixProvider.cs +++ b/src/NSubstitute.Analyzers.CSharp/CodeFixProviders/ReEntrantSetupCodeFixProvider.cs @@ -96,24 +96,10 @@ private static SeparatedSyntaxList CreateSimpleLambdaExpressio private static ArrayTypeSyntax CreateArrayTypeNode(SyntaxGenerator syntaxGenerator, ITypeSymbol type) { var typeSyntax = (TypeSyntax)syntaxGenerator.TypeExpression(type); - var typeArgumentListSyntax = TypeArgumentList( - SeparatedList( - new SyntaxNodeOrToken[] - { - QualifiedName( - QualifiedName( - IdentifierName("NSubstitute"), - IdentifierName("Core")), - IdentifierName("CallInfo")), - Token(SyntaxKind.CommaToken), - typeSyntax - })); - - var qualifiedNameSyntax = QualifiedName(IdentifierName("System"), GenericName(Identifier("Func"), typeArgumentListSyntax)); var arrayRankSpecifierSyntaxes = SingletonList(ArrayRankSpecifier(SingletonSeparatedList(OmittedArraySizeExpression()))); - return ArrayType(qualifiedNameSyntax, arrayRankSpecifierSyntaxes).WithAdditionalAnnotations(Simplifier.Annotation); + return ArrayType(typeSyntax, arrayRankSpecifierSyntaxes).WithAdditionalAnnotations(Simplifier.Annotation); } } } \ No newline at end of file diff --git a/src/NSubstitute.Analyzers.CSharp/DiagnosticAnalyzers/CallInfoCallFinder.cs b/src/NSubstitute.Analyzers.CSharp/DiagnosticAnalyzers/CallInfoCallFinder.cs index 289cb59e..376bb341 100644 --- a/src/NSubstitute.Analyzers.CSharp/DiagnosticAnalyzers/CallInfoCallFinder.cs +++ b/src/NSubstitute.Analyzers.CSharp/DiagnosticAnalyzers/CallInfoCallFinder.cs @@ -4,6 +4,7 @@ using Microsoft.CodeAnalysis.CSharp.Syntax; using NSubstitute.Analyzers.Shared; using NSubstitute.Analyzers.Shared.DiagnosticAnalyzers; +using NSubstitute.Analyzers.Shared.Extensions; namespace NSubstitute.Analyzers.CSharp.DiagnosticAnalyzers { @@ -48,7 +49,7 @@ public override void VisitInvocationExpression(InvocationExpressionSyntax node) { var symbolInfo = _semanticModel.GetSymbolInfo(node); - if (symbolInfo.Symbol != null && symbolInfo.Symbol.ContainingType.ToString().Equals(MetadataNames.NSubstituteCallInfoFullTypeName)) + if (symbolInfo.Symbol != null && symbolInfo.Symbol.ContainingType.IsCallInfoSymbol()) { switch (symbolInfo.Symbol.Name) { @@ -67,7 +68,7 @@ public override void VisitInvocationExpression(InvocationExpressionSyntax node) public override void VisitElementAccessExpression(ElementAccessExpressionSyntax node) { var symbolInfo = ModelExtensions.GetSymbolInfo(_semanticModel, node).Symbol ?? ModelExtensions.GetSymbolInfo(_semanticModel, node.Expression).Symbol; - if (symbolInfo != null && symbolInfo.ContainingType.ToString().Equals(MetadataNames.NSubstituteCallInfoFullTypeName)) + if (symbolInfo != null && symbolInfo.ContainingType.IsCallInfoSymbol()) { DirectIndexerAccesses.Add(node); } diff --git a/src/NSubstitute.Analyzers.Shared/CodeFixProviders/AbstractReEntrantSetupCodeFixProvider.cs b/src/NSubstitute.Analyzers.Shared/CodeFixProviders/AbstractReEntrantSetupCodeFixProvider.cs index d3772c89..de772dc7 100644 --- a/src/NSubstitute.Analyzers.Shared/CodeFixProviders/AbstractReEntrantSetupCodeFixProvider.cs +++ b/src/NSubstitute.Analyzers.Shared/CodeFixProviders/AbstractReEntrantSetupCodeFixProvider.cs @@ -9,6 +9,7 @@ using Microsoft.CodeAnalysis.Editing; using Microsoft.CodeAnalysis.Operations; using Microsoft.CodeAnalysis.Simplification; +using NSubstitute.Analyzers.Shared.Extensions; namespace NSubstitute.Analyzers.Shared.CodeFixProviders { @@ -78,13 +79,27 @@ private async Task CreateChangedDocument( ? 1 : 0; + var otherMethod = methodSymbol.ContainingType.GetMembers(methodSymbol.Name) + .Where(symbol => !symbol.Equals(methodSymbol.ConstructedFrom)) + .OfType() + .FirstOrDefault(method => method.Parameters.Any(param => param.Type.IsCallInfoDelegate(semanticModel))); + + if (otherMethod == null) + { + return context.Document; + } + + var typeArgument = methodSymbol.TypeArguments.FirstOrDefault() ?? methodSymbol.ReceiverType; + var constructed = otherMethod.Construct(typeArgument); + var callInfoArgument = constructed.Parameters.First(param => param.Type.IsCallInfoDelegate(semanticModel)); + var lambdaType = callInfoArgument.Type; foreach (var argumentSyntax in argumentSyntaxes.Skip(skip)) { if (IsArrayParamsArgument(semanticModel, argumentSyntax)) { var updatedParamsArgumentSyntaxNode = CreateUpdatedParamsArgumentSyntaxNode( SyntaxGenerator.GetGenerator(context.Document), - methodSymbol.TypeArguments.FirstOrDefault() ?? methodSymbol.ReceiverType, + lambdaType, argumentSyntax); documentEditor.ReplaceNode(argumentSyntax, updatedParamsArgumentSyntaxNode); diff --git a/src/NSubstitute.Analyzers.Shared/Extensions/TypeInfoExtensions.cs b/src/NSubstitute.Analyzers.Shared/Extensions/TypeInfoExtensions.cs index e615f14f..ef83489f 100644 --- a/src/NSubstitute.Analyzers.Shared/Extensions/TypeInfoExtensions.cs +++ b/src/NSubstitute.Analyzers.Shared/Extensions/TypeInfoExtensions.cs @@ -25,6 +25,11 @@ typeSymbol is INamedTypeSymbol namedTypeSymbol && } public static bool IsCallInfoSymbol(this ITypeSymbol symbol) + { + return IsCallInfoSymbolInternal(symbol) || IsCallInfoSymbolInternal(symbol.BaseType); + } + + private static bool IsCallInfoSymbolInternal(ISymbol symbol) { return symbol != null && symbol.ContainingAssembly?.Name.Equals(MetadataNames.NSubstituteAssemblyName, StringComparison.OrdinalIgnoreCase) == true && diff --git a/src/NSubstitute.Analyzers.VisualBasic/CodeFixProviders/ReEntrantSetupCodeFixProvider.cs b/src/NSubstitute.Analyzers.VisualBasic/CodeFixProviders/ReEntrantSetupCodeFixProvider.cs index cfa81a46..93f72633 100644 --- a/src/NSubstitute.Analyzers.VisualBasic/CodeFixProviders/ReEntrantSetupCodeFixProvider.cs +++ b/src/NSubstitute.Analyzers.VisualBasic/CodeFixProviders/ReEntrantSetupCodeFixProvider.cs @@ -116,25 +116,10 @@ private static SingleLineLambdaExpressionSyntax CreateSingleLineLambdaExpression return lambdaExpression; } - private static QualifiedNameSyntax CreateTypeNode(SyntaxGenerator syntaxGenerator, ITypeSymbol type) + private static TypeSyntax CreateTypeNode(SyntaxGenerator syntaxGenerator, ITypeSymbol type) { var typeSyntax = (TypeSyntax)syntaxGenerator.TypeExpression(type); - var typeArgumentListSyntax = TypeArgumentList( - SeparatedList( - new SyntaxNodeOrToken[] - { - QualifiedName( - QualifiedName( - IdentifierName("NSubstitute"), - IdentifierName("Core")), - IdentifierName("CallInfo")), - Token(SyntaxKind.CommaToken), - typeSyntax - })); - - var qualifiedNameSyntax = QualifiedName(IdentifierName("System"), GenericName(Identifier("Func"), typeArgumentListSyntax)); - - return qualifiedNameSyntax.WithAdditionalAnnotations(Simplifier.Annotation); + return typeSyntax.WithAdditionalAnnotations(Simplifier.Annotation); } } } \ No newline at end of file diff --git a/src/NSubstitute.Analyzers.VisualBasic/DiagnosticAnalyzers/CallInfoCallFinder.cs b/src/NSubstitute.Analyzers.VisualBasic/DiagnosticAnalyzers/CallInfoCallFinder.cs index 8a43f4fd..270959e6 100644 --- a/src/NSubstitute.Analyzers.VisualBasic/DiagnosticAnalyzers/CallInfoCallFinder.cs +++ b/src/NSubstitute.Analyzers.VisualBasic/DiagnosticAnalyzers/CallInfoCallFinder.cs @@ -4,6 +4,7 @@ using Microsoft.CodeAnalysis.VisualBasic.Syntax; using NSubstitute.Analyzers.Shared; using NSubstitute.Analyzers.Shared.DiagnosticAnalyzers; +using NSubstitute.Analyzers.Shared.Extensions; namespace NSubstitute.Analyzers.VisualBasic.DiagnosticAnalyzers { @@ -48,7 +49,7 @@ public override void VisitInvocationExpression(InvocationExpressionSyntax node) { var symbol = _semanticModel.GetSymbolInfo(node).Symbol; - if (symbol != null && symbol.ContainingType.ToString().Equals(MetadataNames.NSubstituteCallInfoFullTypeName)) + if (symbol != null && symbol.ContainingType.IsCallInfoSymbol()) { switch (symbol.Name) { @@ -68,7 +69,7 @@ public override void VisitInvocationExpression(InvocationExpressionSyntax node) { var expressionSymbol = _semanticModel.GetSymbolInfo(node.Expression).Symbol; - if (expressionSymbol != null && expressionSymbol.ContainingType.ToString().Equals(MetadataNames.NSubstituteCallInfoFullTypeName)) + if (expressionSymbol != null && expressionSymbol.ContainingType.IsCallInfoSymbol()) { DirectIndexerAccesses.Add(node); } diff --git a/tests/NSubstitute.Analyzers.Tests.Benchmarks/NSubstitute.Analyzers.Tests.Benchmarks.csproj b/tests/NSubstitute.Analyzers.Tests.Benchmarks/NSubstitute.Analyzers.Tests.Benchmarks.csproj index e1283ef6..ce82c1c1 100644 --- a/tests/NSubstitute.Analyzers.Tests.Benchmarks/NSubstitute.Analyzers.Tests.Benchmarks.csproj +++ b/tests/NSubstitute.Analyzers.Tests.Benchmarks/NSubstitute.Analyzers.Tests.Benchmarks.csproj @@ -6,7 +6,6 @@ - diff --git a/tests/NSubstitute.Analyzers.Tests.CSharp/CSharpProjectOptions.cs b/tests/NSubstitute.Analyzers.Tests.CSharp/CSharpProjectOptions.cs index ffff7742..705a1a1a 100644 --- a/tests/NSubstitute.Analyzers.Tests.CSharp/CSharpProjectOptions.cs +++ b/tests/NSubstitute.Analyzers.Tests.CSharp/CSharpProjectOptions.cs @@ -7,7 +7,7 @@ namespace NSubstitute.Analyzers.Tests.CSharp { public class CSharpProjectOptions : ProjectOptions { - public static CSharpProjectOptions Default { get; } = new CSharpProjectOptions( + public static CSharpProjectOptions Latest { get; } = new CSharpProjectOptions( RuntimeMetadataReference.Default, new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary)); diff --git a/tests/NSubstitute.Analyzers.Tests.CSharp/CSharpWorkspaceFactory.cs b/tests/NSubstitute.Analyzers.Tests.CSharp/CSharpWorkspaceFactory.cs index c903a83f..7f29d497 100644 --- a/tests/NSubstitute.Analyzers.Tests.CSharp/CSharpWorkspaceFactory.cs +++ b/tests/NSubstitute.Analyzers.Tests.CSharp/CSharpWorkspaceFactory.cs @@ -5,7 +5,7 @@ namespace NSubstitute.Analyzers.Tests.CSharp { public class CSharpWorkspaceFactory : WorkspaceFactory { - public static CSharpWorkspaceFactory Default { get; } = new CSharpWorkspaceFactory(CSharpProjectOptions.Default); + public static CSharpWorkspaceFactory Default { get; } = new CSharpWorkspaceFactory(CSharpProjectOptions.Latest); protected override string DocumentExtension { get; } = "cs"; diff --git a/tests/NSubstitute.Analyzers.Tests.CSharp/CodeFixProviderTests/ReEntrantSetupCodeFixProviderTests/ReEntrantSetupCodeFixVerifier.cs b/tests/NSubstitute.Analyzers.Tests.CSharp/CodeFixProviderTests/ReEntrantSetupCodeFixProviderTests/ReEntrantSetupCodeFixVerifier.cs index b5f19c15..364dd164 100644 --- a/tests/NSubstitute.Analyzers.Tests.CSharp/CodeFixProviderTests/ReEntrantSetupCodeFixProviderTests/ReEntrantSetupCodeFixVerifier.cs +++ b/tests/NSubstitute.Analyzers.Tests.CSharp/CodeFixProviderTests/ReEntrantSetupCodeFixProviderTests/ReEntrantSetupCodeFixVerifier.cs @@ -21,14 +21,17 @@ protected ReEntrantSetupCodeFixVerifier() [Theory] [InlineData("CreateReEntrantSubstitute(), CreateDefaultValue(), 1", "_ => CreateReEntrantSubstitute(), _ => CreateDefaultValue(), _ => 1")] - [InlineData("CreateReEntrantSubstitute(), new [] { CreateDefaultValue(), 1 }", "_ => CreateReEntrantSubstitute(), new System.Func[] { _ => CreateDefaultValue(), _ => 1 }")] - [InlineData("CreateReEntrantSubstitute(), new int[] { CreateDefaultValue(), 1 }", "_ => CreateReEntrantSubstitute(), new System.Func[] { _ => CreateDefaultValue(), _ => 1 }")] + [InlineData("CreateReEntrantSubstitute(), new [] { CreateDefaultValue(), 1 }", "_ => CreateReEntrantSubstitute(), new System.Func, int>[] { _ => CreateDefaultValue(), _ => 1 }")] + [InlineData("CreateReEntrantSubstitute(), new int[] { CreateDefaultValue(), 1 }", "_ => CreateReEntrantSubstitute(), new System.Func, int>[] { _ => CreateDefaultValue(), _ => 1 }")] [InlineData("returnThis: CreateReEntrantSubstitute()", "returnThis: _ => CreateReEntrantSubstitute()")] - [InlineData("returnThis: CreateReEntrantSubstitute(), returnThese: new [] { CreateDefaultValue(), 1 }", "returnThis: _ => CreateReEntrantSubstitute(), returnThese: new System.Func[] { _ => CreateDefaultValue(), _ => 1 }")] - [InlineData("returnThis: CreateReEntrantSubstitute(), returnThese: new int[] { CreateDefaultValue(), 1 }", "returnThis: _ => CreateReEntrantSubstitute(), returnThese: new System.Func[] { _ => CreateDefaultValue(), _ => 1 }")] + [InlineData("returnThis: CreateReEntrantSubstitute(), returnThese: new [] { CreateDefaultValue(), 1 }", "returnThis: _ => CreateReEntrantSubstitute(), returnThese: new System.Func, int>[] { _ => CreateDefaultValue(), _ => 1 }")] + [InlineData("returnThis: CreateReEntrantSubstitute(), returnThese: new int[] { CreateDefaultValue(), 1 }", "returnThis: _ => CreateReEntrantSubstitute(), returnThese: new System.Func, int>[] { _ => CreateDefaultValue(), _ => 1 }")] public abstract Task ReplacesArgumentExpression_WithLambda(string arguments, string rewrittenArguments); [Fact] public abstract Task ReplacesArgumentExpression_WithLambdaWithReducedTypes_WhenGeneratingArrayParamsArgument(); + + [Fact] + public abstract Task ReplacesArgumentExpression_WithLambdaWithNonGenericCallInfo_WhenGeneratingArrayParamsArgument(); } } \ No newline at end of file diff --git a/tests/NSubstitute.Analyzers.Tests.CSharp/CodeFixProviderTests/ReEntrantSetupCodeFixProviderTests/ReturnsAsExtensionMethodTests.cs b/tests/NSubstitute.Analyzers.Tests.CSharp/CodeFixProviderTests/ReEntrantSetupCodeFixProviderTests/ReturnsAsExtensionMethodTests.cs index c3ff1c2c..91cf625b 100644 --- a/tests/NSubstitute.Analyzers.Tests.CSharp/CodeFixProviderTests/ReEntrantSetupCodeFixProviderTests/ReturnsAsExtensionMethodTests.cs +++ b/tests/NSubstitute.Analyzers.Tests.CSharp/CodeFixProviderTests/ReEntrantSetupCodeFixProviderTests/ReturnsAsExtensionMethodTests.cs @@ -1,4 +1,6 @@ +using System; using System.Threading.Tasks; +using NSubstitute.Analyzers.Tests.Shared; namespace NSubstitute.Analyzers.Tests.CSharp.CodeFixProviderTests.ReEntrantSetupCodeFixProviderTests { @@ -148,7 +150,7 @@ public interface IFoo public void Test() { var secondSubstitute = Substitute.For(); - secondSubstitute.Id.Returns(_ => CreateReEntrantSubstitute(), new Func[] { _ => MyNamespace.FooTests.Value }); + secondSubstitute.Id.Returns(_ => CreateReEntrantSubstitute(), new Func, int>[] { _ => MyNamespace.FooTests.Value }); } private int CreateReEntrantSubstitute() @@ -161,5 +163,83 @@ private int CreateReEntrantSubstitute() }"; await VerifyFix(oldSource, newSource); } + + public override async Task ReplacesArgumentExpression_WithLambdaWithNonGenericCallInfo_WhenGeneratingArrayParamsArgument() + { + var oldSource = @"using NSubstitute; +using NSubstitute.Core; +using System; + +namespace MyNamespace +{ + public class FooTests + { + private IFoo firstSubstitute = Substitute.For(); + + public static int Value { get; set; } + + public FooTests() + { + firstSubstitute.Id.Returns(45); + } + + public interface IFoo + { + int Id { get; } + } + + public void Test() + { + var secondSubstitute = Substitute.For(); + secondSubstitute.Id.Returns(CreateReEntrantSubstitute(), new[] { MyNamespace.FooTests.Value }); + } + + private int CreateReEntrantSubstitute() + { + var substitute = Substitute.For(); + substitute.Id.Returns(1); + return 1; + } + } +}"; + + var newSource = @"using NSubstitute; +using NSubstitute.Core; +using System; + +namespace MyNamespace +{ + public class FooTests + { + private IFoo firstSubstitute = Substitute.For(); + + public static int Value { get; set; } + + public FooTests() + { + firstSubstitute.Id.Returns(45); + } + + public interface IFoo + { + int Id { get; } + } + + public void Test() + { + var secondSubstitute = Substitute.For(); + secondSubstitute.Id.Returns(_ => CreateReEntrantSubstitute(), new Func[] { _ => MyNamespace.FooTests.Value }); + } + + private int CreateReEntrantSubstitute() + { + var substitute = Substitute.For(); + substitute.Id.Returns(1); + return 1; + } + } +}"; + await VerifyFix(oldSource, newSource, version: NSubstituteVersion.NSubstitute4_2_2); + } } } \ No newline at end of file diff --git a/tests/NSubstitute.Analyzers.Tests.CSharp/CodeFixProviderTests/ReEntrantSetupCodeFixProviderTests/ReturnsAsOrdinaryMethodTests.cs b/tests/NSubstitute.Analyzers.Tests.CSharp/CodeFixProviderTests/ReEntrantSetupCodeFixProviderTests/ReturnsAsOrdinaryMethodTests.cs index 6cbbc148..3776eab8 100644 --- a/tests/NSubstitute.Analyzers.Tests.CSharp/CodeFixProviderTests/ReEntrantSetupCodeFixProviderTests/ReturnsAsOrdinaryMethodTests.cs +++ b/tests/NSubstitute.Analyzers.Tests.CSharp/CodeFixProviderTests/ReEntrantSetupCodeFixProviderTests/ReturnsAsOrdinaryMethodTests.cs @@ -1,4 +1,5 @@ using System.Threading.Tasks; +using NSubstitute.Analyzers.Tests.Shared; namespace NSubstitute.Analyzers.Tests.CSharp.CodeFixProviderTests.ReEntrantSetupCodeFixProviderTests { @@ -148,7 +149,7 @@ public interface IFoo public void Test() { var secondSubstitute = Substitute.For(); - SubstituteExtensions.Returns(secondSubstitute.Id, _ => CreateReEntrantSubstitute(), new Func[] { _ => MyNamespace.FooTests.Value }); + SubstituteExtensions.Returns(secondSubstitute.Id, _ => CreateReEntrantSubstitute(), new Func, int>[] { _ => MyNamespace.FooTests.Value }); } private int CreateReEntrantSubstitute() @@ -161,5 +162,83 @@ private int CreateReEntrantSubstitute() }"; await VerifyFix(oldSource, newSource); } + + public override async Task ReplacesArgumentExpression_WithLambdaWithNonGenericCallInfo_WhenGeneratingArrayParamsArgument() + { + var oldSource = @"using NSubstitute; +using NSubstitute.Core; +using System; + +namespace MyNamespace +{ + public class FooTests + { + private IFoo firstSubstitute = Substitute.For(); + + public static int Value { get; set; } + + public FooTests() + { + firstSubstitute.Id.Returns(45); + } + + public interface IFoo + { + int Id { get; } + } + + public void Test() + { + var secondSubstitute = Substitute.For(); + SubstituteExtensions.Returns(secondSubstitute.Id, CreateReEntrantSubstitute(), new[] { MyNamespace.FooTests.Value }); + } + + private int CreateReEntrantSubstitute() + { + var substitute = Substitute.For(); + substitute.Id.Returns(1); + return 1; + } + } +}"; + + var newSource = @"using NSubstitute; +using NSubstitute.Core; +using System; + +namespace MyNamespace +{ + public class FooTests + { + private IFoo firstSubstitute = Substitute.For(); + + public static int Value { get; set; } + + public FooTests() + { + firstSubstitute.Id.Returns(45); + } + + public interface IFoo + { + int Id { get; } + } + + public void Test() + { + var secondSubstitute = Substitute.For(); + SubstituteExtensions.Returns(secondSubstitute.Id, _ => CreateReEntrantSubstitute(), new Func[] { _ => MyNamespace.FooTests.Value }); + } + + private int CreateReEntrantSubstitute() + { + var substitute = Substitute.For(); + substitute.Id.Returns(1); + return 1; + } + } +}"; + await VerifyFix(oldSource, newSource, version: NSubstituteVersion.NSubstitute4_2_2); + } } } \ No newline at end of file diff --git a/tests/NSubstitute.Analyzers.Tests.CSharp/NSubstitute.Analyzers.Tests.CSharp.csproj b/tests/NSubstitute.Analyzers.Tests.CSharp/NSubstitute.Analyzers.Tests.CSharp.csproj index 9df8d480..9249cd77 100644 --- a/tests/NSubstitute.Analyzers.Tests.CSharp/NSubstitute.Analyzers.Tests.CSharp.csproj +++ b/tests/NSubstitute.Analyzers.Tests.CSharp/NSubstitute.Analyzers.Tests.CSharp.csproj @@ -6,7 +6,6 @@ - @@ -19,6 +18,8 @@ - + + Always + \ No newline at end of file diff --git a/tests/NSubstitute.Analyzers.Tests.Shared/CodeFixProviders/CodeFixVerifier.cs b/tests/NSubstitute.Analyzers.Tests.Shared/CodeFixProviders/CodeFixVerifier.cs index 6e716ef2..87ead24f 100644 --- a/tests/NSubstitute.Analyzers.Tests.Shared/CodeFixProviders/CodeFixVerifier.cs +++ b/tests/NSubstitute.Analyzers.Tests.Shared/CodeFixProviders/CodeFixVerifier.cs @@ -24,11 +24,18 @@ protected CodeFixVerifier(WorkspaceFactory workspaceFactory) protected abstract DiagnosticAnalyzer DiagnosticAnalyzer { get; } - protected async Task VerifyFix(string oldSource, string newSource, int? codeFixIndex = null) + protected async Task VerifyFix( + string oldSource, + string newSource, + int? codeFixIndex = null, + NSubstituteVersion version = NSubstituteVersion.Latest) { using (var workspace = new AdhocWorkspace()) { var project = AddProject(workspace.CurrentSolution, oldSource); + + project = UpdateNSubstituteReference(project, version); + var document = project.Documents.Single(); var compilation = await project.GetCompilationAsync(); @@ -81,5 +88,16 @@ protected async Task VerifyFix(string oldSource, string newSource, int? codeFixI actual.Should().Be(newSource); } } + + private static Project UpdateNSubstituteReference(Project project, NSubstituteVersion version) + { + if (version != NSubstituteVersion.Latest) + { + project = project.RemoveMetadataReference(RuntimeMetadataReference.NSubstituteLatestReference) + .AddMetadataReference(RuntimeMetadataReference.NSubstitute422Reference); + } + + return project; + } } } diff --git a/tests/NSubstitute.Analyzers.Tests.Shared/CodeFixProviders/IReEntrantSetupCodeFixProviderVerifier.cs b/tests/NSubstitute.Analyzers.Tests.Shared/CodeFixProviders/IReEntrantSetupCodeFixProviderVerifier.cs index 59d7a81b..8f83385a 100644 --- a/tests/NSubstitute.Analyzers.Tests.Shared/CodeFixProviders/IReEntrantSetupCodeFixProviderVerifier.cs +++ b/tests/NSubstitute.Analyzers.Tests.Shared/CodeFixProviders/IReEntrantSetupCodeFixProviderVerifier.cs @@ -7,5 +7,7 @@ public interface IReEntrantSetupCodeFixProviderVerifier Task ReplacesArgumentExpression_WithLambda(string arguments, string rewrittenArguments); Task ReplacesArgumentExpression_WithLambdaWithReducedTypes_WhenGeneratingArrayParamsArgument(); + + Task ReplacesArgumentExpression_WithLambdaWithNonGenericCallInfo_WhenGeneratingArrayParamsArgument(); } } \ No newline at end of file diff --git a/tests/NSubstitute.Analyzers.Tests.Shared/NSubstitute.Analyzers.Tests.Shared.csproj b/tests/NSubstitute.Analyzers.Tests.Shared/NSubstitute.Analyzers.Tests.Shared.csproj index 6795bc66..601f7e95 100644 --- a/tests/NSubstitute.Analyzers.Tests.Shared/NSubstitute.Analyzers.Tests.Shared.csproj +++ b/tests/NSubstitute.Analyzers.Tests.Shared/NSubstitute.Analyzers.Tests.Shared.csproj @@ -13,7 +13,6 @@ - diff --git a/tests/NSubstitute.Analyzers.Tests.Shared/NSubstituteVersion.cs b/tests/NSubstitute.Analyzers.Tests.Shared/NSubstituteVersion.cs new file mode 100644 index 00000000..841c390b --- /dev/null +++ b/tests/NSubstitute.Analyzers.Tests.Shared/NSubstituteVersion.cs @@ -0,0 +1,8 @@ +namespace NSubstitute.Analyzers.Tests.Shared +{ + public enum NSubstituteVersion + { + NSubstitute4_2_2 = 1, + Latest = 2147483647 + } +} \ No newline at end of file diff --git a/tests/NSubstitute.Analyzers.Tests.Shared/RuntimeMetadataReference.cs b/tests/NSubstitute.Analyzers.Tests.Shared/RuntimeMetadataReference.cs index b9106881..295ba9fa 100644 --- a/tests/NSubstitute.Analyzers.Tests.Shared/RuntimeMetadataReference.cs +++ b/tests/NSubstitute.Analyzers.Tests.Shared/RuntimeMetadataReference.cs @@ -16,8 +16,6 @@ public class RuntimeMetadataReference private static readonly MetadataReference CodeAnalysisReference = MetadataReference.CreateFromFile(typeof(Compilation).Assembly.Location); - private static readonly MetadataReference NSubstituteReference = MetadataReference.CreateFromFile(typeof(Substitute).Assembly.Location); - private static readonly MetadataReference TasksExtensionsReference = MetadataReference.CreateFromFile(Assembly.Load("System.Threading.Tasks.Extensions").Location); private static readonly MetadataReference NetStandard = MetadataReference.CreateFromFile(Assembly.Load("netstandard, Version=2.0.0.0").Location); @@ -34,7 +32,7 @@ static RuntimeMetadataReference() CorlibReference, SystemCoreReference, CodeAnalysisReference, - NSubstituteReference, + NSubstituteLatestReference, NetStandard, TasksExtensionsReference, LinqExpressionReference, @@ -44,6 +42,12 @@ static RuntimeMetadataReference() public static ImmutableArray Default { get; } + public static MetadataReference NSubstitute422Reference { get; } = + MetadataReference.CreateFromFile("nsubstitute-4.2.2/NSubstitute.dll"); + + public static MetadataReference NSubstituteLatestReference { get; } = + MetadataReference.CreateFromFile("nsubstitute-latest/NSubstitute.dll"); + private static MetadataReference GetAssemblyReference(IEnumerable assemblies, string name) { return MetadataReference.CreateFromFile(Assembly.Load(assemblies.First(n => n.Name == name)).Location); diff --git a/tests/NSubstitute.Analyzers.Tests.VisualBasic/CodeFixProvidersTests/ReEntrantSetupCodeFixProviderTests/ReEntrantSetupCodeFixVerifier.cs b/tests/NSubstitute.Analyzers.Tests.VisualBasic/CodeFixProvidersTests/ReEntrantSetupCodeFixProviderTests/ReEntrantSetupCodeFixVerifier.cs index a9fb6d7b..68dec8a7 100644 --- a/tests/NSubstitute.Analyzers.Tests.VisualBasic/CodeFixProvidersTests/ReEntrantSetupCodeFixProviderTests/ReEntrantSetupCodeFixVerifier.cs +++ b/tests/NSubstitute.Analyzers.Tests.VisualBasic/CodeFixProvidersTests/ReEntrantSetupCodeFixProviderTests/ReEntrantSetupCodeFixVerifier.cs @@ -16,12 +16,15 @@ public abstract class ReEntrantSetupCodeFixVerifier : VisualBasicCodeFixVerifier [Theory] [InlineData("CreateReEntrantSubstitute(), CreateDefaultValue(), 1", "Function(x) CreateReEntrantSubstitute(), Function(x) CreateDefaultValue(), Function(x) 1")] - [InlineData("CreateReEntrantSubstitute(), { CreateDefaultValue(), 1 }", "Function(x) CreateReEntrantSubstitute(), New System.Func(Of Core.CallInfo, Integer)() {Function(x) CreateDefaultValue(), Function(x) 1}")] - [InlineData("CreateReEntrantSubstitute(), New Integer() {CreateDefaultValue(), 1}", "Function(x) CreateReEntrantSubstitute(), New System.Func(Of Core.CallInfo, Integer)() {Function(x) CreateDefaultValue(), Function(x) 1}")] + [InlineData("CreateReEntrantSubstitute(), { CreateDefaultValue(), 1 }", "Function(x) CreateReEntrantSubstitute(), New System.Func(Of Core.CallInfo(Of Integer), Integer)() {Function(x) CreateDefaultValue(), Function(x) 1}")] + [InlineData("CreateReEntrantSubstitute(), New Integer() {CreateDefaultValue(), 1}", "Function(x) CreateReEntrantSubstitute(), New System.Func(Of Core.CallInfo(Of Integer), Integer)() {Function(x) CreateDefaultValue(), Function(x) 1}")] [InlineData("returnThis:= CreateReEntrantSubstitute()", "returnThis:=Function(x) CreateReEntrantSubstitute()")] public abstract Task ReplacesArgumentExpression_WithLambda(string arguments, string rewrittenArguments); [Fact] public abstract Task ReplacesArgumentExpression_WithLambdaWithReducedTypes_WhenGeneratingArrayParamsArgument(); + + [Fact] + public abstract Task ReplacesArgumentExpression_WithLambdaWithNonGenericCallInfo_WhenGeneratingArrayParamsArgument(); } } \ No newline at end of file diff --git a/tests/NSubstitute.Analyzers.Tests.VisualBasic/CodeFixProvidersTests/ReEntrantSetupCodeFixProviderTests/ReturnsAsExtensionMethodTests.cs b/tests/NSubstitute.Analyzers.Tests.VisualBasic/CodeFixProvidersTests/ReEntrantSetupCodeFixProviderTests/ReturnsAsExtensionMethodTests.cs index 4df67054..ce6418ba 100644 --- a/tests/NSubstitute.Analyzers.Tests.VisualBasic/CodeFixProvidersTests/ReEntrantSetupCodeFixProviderTests/ReturnsAsExtensionMethodTests.cs +++ b/tests/NSubstitute.Analyzers.Tests.VisualBasic/CodeFixProvidersTests/ReEntrantSetupCodeFixProviderTests/ReturnsAsExtensionMethodTests.cs @@ -1,4 +1,5 @@ using System.Threading.Tasks; +using NSubstitute.Analyzers.Tests.Shared; namespace NSubstitute.Analyzers.Tests.VisualBasic.CodeFixProvidersTests.ReEntrantSetupCodeFixProviderTests { @@ -124,7 +125,7 @@ End Interface Public Sub Test() Dim secondSubstitute = NSubstitute.Substitute.[For](Of IFoo)() - secondSubstitute.Id.Returns(Function(x) CreateReEntrantSubstitute(), New Func(Of CallInfo, Integer)() {Function(x) MyNamespace.FooTests.Value}) + secondSubstitute.Id.Returns(Function(x) CreateReEntrantSubstitute(), New Func(Of CallInfo(Of Integer), Integer)() {Function(x) MyNamespace.FooTests.Value}) End Sub Private Function CreateReEntrantSubstitute() As Integer @@ -137,5 +138,71 @@ End Namespace "; await VerifyFix(oldSource, newSource); } + + public override async Task ReplacesArgumentExpression_WithLambdaWithNonGenericCallInfo_WhenGeneratingArrayParamsArgument() + { + var oldSource = @"Imports NSubstitute +Imports NSubstitute.Core +Imports System + +Namespace MyNamespace + Public Class FooTests + Private firstSubstitute As IFoo = Substitute.[For](Of IFoo)() + Public Shared Property Value As Integer + + Public Sub New() + firstSubstitute.Id.Returns(45) + End Sub + + Interface IFoo + ReadOnly Property Id As Integer + End Interface + + Public Sub Test() + Dim secondSubstitute = NSubstitute.Substitute.[For](Of IFoo)() + secondSubstitute.Id.Returns(CreateReEntrantSubstitute(), {MyNamespace.FooTests.Value}) + End Sub + + Private Function CreateReEntrantSubstitute() As Integer + Dim substitute = NSubstitute.Substitute.[For](Of IFoo)() + substitute.Id.Returns(1) + Return 1 + End Function + End Class +End Namespace +"; + + var newSource = @"Imports NSubstitute +Imports NSubstitute.Core +Imports System + +Namespace MyNamespace + Public Class FooTests + Private firstSubstitute As IFoo = Substitute.[For](Of IFoo)() + Public Shared Property Value As Integer + + Public Sub New() + firstSubstitute.Id.Returns(45) + End Sub + + Interface IFoo + ReadOnly Property Id As Integer + End Interface + + Public Sub Test() + Dim secondSubstitute = NSubstitute.Substitute.[For](Of IFoo)() + secondSubstitute.Id.Returns(Function(x) CreateReEntrantSubstitute(), New Func(Of CallInfo, Integer)() {Function(x) MyNamespace.FooTests.Value}) + End Sub + + Private Function CreateReEntrantSubstitute() As Integer + Dim substitute = NSubstitute.Substitute.[For](Of IFoo)() + substitute.Id.Returns(1) + Return 1 + End Function + End Class +End Namespace +"; + await VerifyFix(oldSource, newSource, version: NSubstituteVersion.NSubstitute4_2_2); + } } } \ No newline at end of file diff --git a/tests/NSubstitute.Analyzers.Tests.VisualBasic/CodeFixProvidersTests/ReEntrantSetupCodeFixProviderTests/ReturnsAsOrdinaryMethodTests.cs b/tests/NSubstitute.Analyzers.Tests.VisualBasic/CodeFixProvidersTests/ReEntrantSetupCodeFixProviderTests/ReturnsAsOrdinaryMethodTests.cs index 38eed572..18a40d43 100644 --- a/tests/NSubstitute.Analyzers.Tests.VisualBasic/CodeFixProvidersTests/ReEntrantSetupCodeFixProviderTests/ReturnsAsOrdinaryMethodTests.cs +++ b/tests/NSubstitute.Analyzers.Tests.VisualBasic/CodeFixProvidersTests/ReEntrantSetupCodeFixProviderTests/ReturnsAsOrdinaryMethodTests.cs @@ -1,4 +1,5 @@ using System.Threading.Tasks; +using NSubstitute.Analyzers.Tests.Shared; namespace NSubstitute.Analyzers.Tests.VisualBasic.CodeFixProvidersTests.ReEntrantSetupCodeFixProviderTests { @@ -124,7 +125,7 @@ End Interface Public Sub Test() Dim secondSubstitute = NSubstitute.Substitute.[For](Of IFoo)() - SubstituteExtensions.Returns(secondSubstitute.Id, Function(x) CreateReEntrantSubstitute(), New Func(Of CallInfo, Integer)() {Function(x) MyNamespace.FooTests.Value}) + SubstituteExtensions.Returns(secondSubstitute.Id, Function(x) CreateReEntrantSubstitute(), New Func(Of CallInfo(Of Integer), Integer)() {Function(x) MyNamespace.FooTests.Value}) End Sub Private Function CreateReEntrantSubstitute() As Integer @@ -137,5 +138,71 @@ End Namespace "; await VerifyFix(oldSource, newSource); } + + public override async Task ReplacesArgumentExpression_WithLambdaWithNonGenericCallInfo_WhenGeneratingArrayParamsArgument() + { + var oldSource = @"Imports NSubstitute +Imports NSubstitute.Core +Imports System + +Namespace MyNamespace + Public Class FooTests + Private firstSubstitute As IFoo = Substitute.[For](Of IFoo)() + Public Shared Property Value As Integer + + Public Sub New() + firstSubstitute.Id.Returns(45) + End Sub + + Interface IFoo + ReadOnly Property Id As Integer + End Interface + + Public Sub Test() + Dim secondSubstitute = NSubstitute.Substitute.[For](Of IFoo)() + SubstituteExtensions.Returns(secondSubstitute.Id, CreateReEntrantSubstitute(), {MyNamespace.FooTests.Value}) + End Sub + + Private Function CreateReEntrantSubstitute() As Integer + Dim substitute = NSubstitute.Substitute.[For](Of IFoo)() + substitute.Id.Returns(1) + Return 1 + End Function + End Class +End Namespace +"; + + var newSource = @"Imports NSubstitute +Imports NSubstitute.Core +Imports System + +Namespace MyNamespace + Public Class FooTests + Private firstSubstitute As IFoo = Substitute.[For](Of IFoo)() + Public Shared Property Value As Integer + + Public Sub New() + firstSubstitute.Id.Returns(45) + End Sub + + Interface IFoo + ReadOnly Property Id As Integer + End Interface + + Public Sub Test() + Dim secondSubstitute = NSubstitute.Substitute.[For](Of IFoo)() + SubstituteExtensions.Returns(secondSubstitute.Id, Function(x) CreateReEntrantSubstitute(), New Func(Of CallInfo, Integer)() {Function(x) MyNamespace.FooTests.Value}) + End Sub + + Private Function CreateReEntrantSubstitute() As Integer + Dim substitute = NSubstitute.Substitute.[For](Of IFoo)() + substitute.Id.Returns(1) + Return 1 + End Function + End Class +End Namespace +"; + await VerifyFix(oldSource, newSource, version: NSubstituteVersion.NSubstitute4_2_2); + } } } \ No newline at end of file diff --git a/tests/NSubstitute.Analyzers.Tests.VisualBasic/DiagnosticAnalyzersTests/ReEntrantReturnsSetupAnalyzerTests/ReturnsAsOrdinaryMethodTests.cs b/tests/NSubstitute.Analyzers.Tests.VisualBasic/DiagnosticAnalyzersTests/ReEntrantReturnsSetupAnalyzerTests/ReturnsAsOrdinaryMethodTests.cs index c5124855..4e471e9d 100644 --- a/tests/NSubstitute.Analyzers.Tests.VisualBasic/DiagnosticAnalyzersTests/ReEntrantReturnsSetupAnalyzerTests/ReturnsAsOrdinaryMethodTests.cs +++ b/tests/NSubstitute.Analyzers.Tests.VisualBasic/DiagnosticAnalyzersTests/ReEntrantReturnsSetupAnalyzerTests/ReturnsAsOrdinaryMethodTests.cs @@ -312,15 +312,15 @@ Private Function OtherReturn() As Integer Return 1 End Function - Private Function ReturnThisWithCallInfo(ByVal info As CallInfo) As Integer + Private Function ReturnThisWithCallInfo(ByVal info As CallInfo(Of Integer)) As Integer Return OtherReturn() End Function - Private Function MyMethod() As Func(Of CallInfo, Integer) + Private Function MyMethod() As Func(Of CallInfo(Of Integer), Integer) Return AddressOf ReturnThisWithCallInfo End Function - Private ReadOnly Property MyProperty As Func(Of CallInfo, Integer) + Private ReadOnly Property MyProperty As Func(Of CallInfo(Of Integer), Integer) Get Return AddressOf ReturnThisWithCallInfo End Get @@ -362,15 +362,15 @@ Private Function OtherReturn() As Integer Return 1 End Function - Private Function ReturnThisWithCallInfo(ByVal info As CallInfo) As Integer + Private Function ReturnThisWithCallInfo(ByVal info As CallInfo(Of Integer)) As Integer Return OtherReturn() End Function - Private Function MyMethod() As Func(Of CallInfo, Integer) + Private Function MyMethod() As Func(Of CallInfo(Of Integer), Integer) Return AddressOf ReturnThisWithCallInfo End Function - Private ReadOnly Property MyProperty As Func(Of CallInfo, Integer) + Private ReadOnly Property MyProperty As Func(Of CallInfo(Of Integer), Integer) Get Return AddressOf ReturnThisWithCallInfo End Get @@ -747,7 +747,7 @@ End Interface Public Class FooTests Public Sub Test() Dim substitute = NSubstitute.Substitute.[For](Of IFoo)() - {method}(substitute.Bar(), Function(x) 1, New Func(Of CallInfo, Integer)() {{Function(y) OtherReturn()}}) + {method}(substitute.Bar(), Function(x) 1, New Func(Of CallInfo(Of Integer), Integer)() {{Function(y) OtherReturn()}}) End Sub Private Function OtherReturn() As Integer diff --git a/tests/NSubstitute.Analyzers.Tests.VisualBasic/NSubstitute.Analyzers.Tests.VisualBasic.csproj b/tests/NSubstitute.Analyzers.Tests.VisualBasic/NSubstitute.Analyzers.Tests.VisualBasic.csproj index 351dbb45..10205b42 100644 --- a/tests/NSubstitute.Analyzers.Tests.VisualBasic/NSubstitute.Analyzers.Tests.VisualBasic.csproj +++ b/tests/NSubstitute.Analyzers.Tests.VisualBasic/NSubstitute.Analyzers.Tests.VisualBasic.csproj @@ -7,7 +7,6 @@ - @@ -17,4 +16,9 @@ + + + Always + + \ No newline at end of file diff --git a/tests/NSubstitute.Analyzers.Tests.VisualBasic/VisualBasicProjectOptions.cs b/tests/NSubstitute.Analyzers.Tests.VisualBasic/VisualBasicProjectOptions.cs index ff976b9c..d92ff9c8 100644 --- a/tests/NSubstitute.Analyzers.Tests.VisualBasic/VisualBasicProjectOptions.cs +++ b/tests/NSubstitute.Analyzers.Tests.VisualBasic/VisualBasicProjectOptions.cs @@ -8,7 +8,7 @@ namespace NSubstitute.Analyzers.Tests.VisualBasic { public class VisualBasicProjectOptions : ProjectOptions { - public static VisualBasicProjectOptions Default { get; } = new VisualBasicProjectOptions( + public static VisualBasicProjectOptions Latest { get; } = new VisualBasicProjectOptions( RuntimeMetadataReference.Default.Add(MetadataReference.CreateFromFile(typeof(StandardModuleAttribute).Assembly.Location)), new VisualBasicCompilationOptions(OutputKind.DynamicallyLinkedLibrary)); diff --git a/tests/NSubstitute.Analyzers.Tests.VisualBasic/VisualBasicWorkspaceFactory.cs b/tests/NSubstitute.Analyzers.Tests.VisualBasic/VisualBasicWorkspaceFactory.cs index 6f4e322f..89816a58 100644 --- a/tests/NSubstitute.Analyzers.Tests.VisualBasic/VisualBasicWorkspaceFactory.cs +++ b/tests/NSubstitute.Analyzers.Tests.VisualBasic/VisualBasicWorkspaceFactory.cs @@ -6,7 +6,7 @@ namespace NSubstitute.Analyzers.Tests.VisualBasic { public class VisualBasicWorkspaceFactory : WorkspaceFactory { - public static VisualBasicWorkspaceFactory Default { get; } = new VisualBasicWorkspaceFactory(VisualBasicProjectOptions.Default); + public static VisualBasicWorkspaceFactory Default { get; } = new VisualBasicWorkspaceFactory(VisualBasicProjectOptions.Latest); protected override string DocumentExtension { get; } = "vb";