diff --git a/StyleCop.Analyzers/StyleCop.Analyzers.Test/StyleCop.Analyzers.Test.csproj b/StyleCop.Analyzers/StyleCop.Analyzers.Test/StyleCop.Analyzers.Test.csproj index 28420c7b2..89e5db1ae 100644 --- a/StyleCop.Analyzers/StyleCop.Analyzers.Test/StyleCop.Analyzers.Test.csproj +++ b/StyleCop.Analyzers/StyleCop.Analyzers.Test/StyleCop.Analyzers.Test.csproj @@ -18,7 +18,7 @@ - + diff --git a/StyleCop.Analyzers/StyleCop.Analyzers.Test/Verifiers/StyleCopCodeFixVerifier`2.cs b/StyleCop.Analyzers/StyleCop.Analyzers.Test/Verifiers/StyleCopCodeFixVerifier`2.cs index b63b7cd31..02242ec7b 100644 --- a/StyleCop.Analyzers/StyleCop.Analyzers.Test/Verifiers/StyleCopCodeFixVerifier`2.cs +++ b/StyleCop.Analyzers/StyleCop.Analyzers.Test/Verifiers/StyleCopCodeFixVerifier`2.cs @@ -99,6 +99,7 @@ public CSharpTest() public CSharpTest(LanguageVersion? languageVersion) { this.ReferenceAssemblies = GenericAnalyzerTest.ReferenceAssemblies; + this.LanguageVersion = languageVersion; this.OptionsTransforms.Add(options => options @@ -109,15 +110,6 @@ public CSharpTest(LanguageVersion? languageVersion) this.TestState.AdditionalFilesFactories.Add(GenerateSettingsFile); this.CodeActionValidationMode = CodeActionValidationMode.None; - if (languageVersion != null) - { - this.SolutionTransforms.Add((solution, projectId) => - { - var parseOptions = (CSharpParseOptions)solution.GetProject(projectId).ParseOptions; - return solution.WithProjectParseOptions(projectId, parseOptions.WithLanguageVersion(languageVersion.Value)); - }); - } - this.SolutionTransforms.Add((solution, projectId) => { var corlib = solution.GetProject(projectId).MetadataReferences.OfType() @@ -237,6 +229,8 @@ public CSharpTest(LanguageVersion? languageVersion) /// public List ExplicitlyEnabledDiagnostics { get; } = new List(); + private LanguageVersion? LanguageVersion { get; } + protected override CompilationOptions CreateCompilationOptions() { var compilationOptions = base.CreateCompilationOptions(); @@ -250,6 +244,17 @@ protected override CompilationOptions CreateCompilationOptions() return compilationOptions.WithSpecificDiagnosticOptions(specificDiagnosticOptions); } + protected override ParseOptions CreateParseOptions() + { + var parseOptions = base.CreateParseOptions(); + if (this.LanguageVersion is { } languageVersion) + { + parseOptions = ((CSharpParseOptions)parseOptions).WithLanguageVersion(languageVersion); + } + + return parseOptions; + } + protected override IEnumerable GetCodeFixProviders() { var codeFixProvider = new TCodeFix(); diff --git a/StyleCop.Analyzers/StyleCop.Analyzers.Test/Verifiers/StyleCopDiagnosticVerifier`1.cs b/StyleCop.Analyzers/StyleCop.Analyzers.Test/Verifiers/StyleCopDiagnosticVerifier`1.cs index e879fd209..9cc4f2b33 100644 --- a/StyleCop.Analyzers/StyleCop.Analyzers.Test/Verifiers/StyleCopDiagnosticVerifier`1.cs +++ b/StyleCop.Analyzers/StyleCop.Analyzers.Test/Verifiers/StyleCopDiagnosticVerifier`1.cs @@ -62,14 +62,20 @@ public CSharpTest() public CSharpTest(LanguageVersion? languageVersion) { - if (languageVersion != null) + this.LanguageVersion = languageVersion; + } + + private LanguageVersion? LanguageVersion { get; } + + protected override ParseOptions CreateParseOptions() + { + var parseOptions = base.CreateParseOptions(); + if (this.LanguageVersion is { } languageVersion) { - this.SolutionTransforms.Add((solution, projectId) => - { - var parseOptions = (CSharpParseOptions)solution.GetProject(projectId).ParseOptions; - return solution.WithProjectParseOptions(projectId, parseOptions.WithLanguageVersion(languageVersion.Value)); - }); + parseOptions = ((CSharpParseOptions)parseOptions).WithLanguageVersion(languageVersion); } + + return parseOptions; } } }