@@ -99,6 +99,7 @@ public CSharpTest()
9999 public CSharpTest ( LanguageVersion ? languageVersion )
100100 {
101101 this . ReferenceAssemblies = GenericAnalyzerTest . ReferenceAssemblies ;
102+ this . LanguageVersion = languageVersion ;
102103
103104 this . OptionsTransforms . Add ( options =>
104105 options
@@ -109,15 +110,6 @@ public CSharpTest(LanguageVersion? languageVersion)
109110 this . TestState . AdditionalFilesFactories . Add ( GenerateSettingsFile ) ;
110111 this . CodeActionValidationMode = CodeActionValidationMode . None ;
111112
112- if ( languageVersion != null )
113- {
114- this . SolutionTransforms . Add ( ( solution , projectId ) =>
115- {
116- var parseOptions = ( CSharpParseOptions ) solution . GetProject ( projectId ) . ParseOptions ;
117- return solution . WithProjectParseOptions ( projectId , parseOptions . WithLanguageVersion ( languageVersion . Value ) ) ;
118- } ) ;
119- }
120-
121113 this . SolutionTransforms . Add ( ( solution , projectId ) =>
122114 {
123115 var corlib = solution . GetProject ( projectId ) . MetadataReferences . OfType < PortableExecutableReference > ( )
@@ -237,6 +229,8 @@ public CSharpTest(LanguageVersion? languageVersion)
237229 /// </value>
238230 public List < string > ExplicitlyEnabledDiagnostics { get ; } = new List < string > ( ) ;
239231
232+ private LanguageVersion ? LanguageVersion { get ; }
233+
240234 protected override CompilationOptions CreateCompilationOptions ( )
241235 {
242236 var compilationOptions = base . CreateCompilationOptions ( ) ;
@@ -250,6 +244,17 @@ protected override CompilationOptions CreateCompilationOptions()
250244 return compilationOptions . WithSpecificDiagnosticOptions ( specificDiagnosticOptions ) ;
251245 }
252246
247+ protected override ParseOptions CreateParseOptions ( )
248+ {
249+ var parseOptions = base . CreateParseOptions ( ) ;
250+ if ( this . LanguageVersion is { } languageVersion )
251+ {
252+ parseOptions = ( ( CSharpParseOptions ) parseOptions ) . WithLanguageVersion ( languageVersion ) ;
253+ }
254+
255+ return parseOptions ;
256+ }
257+
253258 protected override IEnumerable < CodeFixProvider > GetCodeFixProviders ( )
254259 {
255260 var codeFixProvider = new TCodeFix ( ) ;
0 commit comments