@@ -157,7 +157,7 @@ public static RazorProjectEngineBuilder SetCSharpLanguageVersion(this RazorProje
157157
158158 // This will convert any "latest", "default" or "LatestMajor" LanguageVersions into their numerical equivalent.
159159 var effectiveCSharpLanguageVersion = LanguageVersionFacts . MapSpecifiedToEffectiveVersion ( csharpLanguageVersion ) ;
160- builder . Features . Add ( new ConfigureParserForCSharpVersionFeature ( effectiveCSharpLanguageVersion ) ) ;
160+ builder . Features . Add ( new ConfigureParserForCSharpVersionFeature ( builder . Configuration . LanguageVersion , effectiveCSharpLanguageVersion ) ) ;
161161
162162 return builder ;
163163 }
@@ -199,20 +199,21 @@ public void Configure(RazorCodeGenerationOptions.Builder builder)
199199 }
200200 }
201201
202- private sealed class ConfigureParserForCSharpVersionFeature ( LanguageVersion languageVersion ) : RazorEngineFeatureBase , IConfigureRazorCodeGenerationOptionsFeature
202+ private sealed class ConfigureParserForCSharpVersionFeature (
203+ RazorLanguageVersion razorLanguageVersion ,
204+ LanguageVersion csharpLanguageVersion )
205+ : RazorEngineFeatureBase , IConfigureRazorCodeGenerationOptionsFeature
203206 {
204- public LanguageVersion CSharpLanguageVersion { get ; } = languageVersion ;
205-
206207 public int Order { get ; set ; }
207208
208209 public void Configure ( RazorCodeGenerationOptions . Builder builder )
209210 {
210- if ( builder . LanguageVersion . Major is < 3 )
211+ if ( razorLanguageVersion . Major is < 3 )
211212 {
212213 // Prior to 3.0 there were no C# version specific controlled features. Suppress nullability enforcement.
213214 builder . SuppressNullabilityEnforcement = true ;
214215 }
215- else if ( CSharpLanguageVersion < LanguageVersion . CSharp8 )
216+ else if ( csharpLanguageVersion < LanguageVersion . CSharp8 )
216217 {
217218 // Having nullable flags < C# 8.0 would cause compile errors.
218219 builder . SuppressNullabilityEnforcement = true ;
@@ -231,13 +232,13 @@ public void Configure(RazorCodeGenerationOptions.Builder builder)
231232 builder . SuppressNullabilityEnforcement = false ;
232233 }
233234
234- if ( builder . LanguageVersion . Major is >= 5 )
235+ if ( razorLanguageVersion . Major is >= 5 )
235236 {
236237 // This is a useful optimization but isn't supported by older framework versions
237238 builder . OmitMinimizedComponentAttributeValues = true ;
238239 }
239240
240- if ( CSharpLanguageVersion >= LanguageVersion . CSharp10 )
241+ if ( csharpLanguageVersion >= LanguageVersion . CSharp10 )
241242 {
242243 builder . UseEnhancedLinePragma = true ;
243244 }
0 commit comments