@@ -233,22 +233,21 @@ public async Task CustomShortCircuitOperators([ValueSource(nameof(defaultOptions
233233 [ Test ]
234234 public async Task ExceptionHandling ( [ ValueSource ( nameof ( defaultOptions ) ) ] CompilerOptions cscOptions )
235235 {
236- await RunForLibrary ( cscOptions : cscOptions , decompilerSettings : new DecompilerSettings {
237- NullPropagation = false ,
236+ await RunForLibrary ( cscOptions : cscOptions , configureDecompiler : settings => {
237+ settings . NullPropagation = false ;
238238 // legacy csc generates a dead store in debug builds
239- RemoveDeadStores = ( cscOptions == CompilerOptions . None ) ,
240- FileScopedNamespaces = false ,
239+ settings . RemoveDeadStores = ( cscOptions == CompilerOptions . None ) ;
240+ settings . FileScopedNamespaces = false ;
241241 } ) ;
242242 }
243243
244244 [ Test ]
245245 public async Task Switch ( [ ValueSource ( nameof ( defaultOptions ) ) ] CompilerOptions cscOptions )
246246 {
247- await RunForLibrary ( cscOptions : cscOptions , decompilerSettings : new DecompilerSettings {
247+ await RunForLibrary ( cscOptions : cscOptions , configureDecompiler : settings => {
248248 // legacy csc generates a dead store in debug builds
249- RemoveDeadStores = ( cscOptions == CompilerOptions . None ) ,
250- SwitchExpressions = false ,
251- FileScopedNamespaces = false ,
249+ settings . RemoveDeadStores = ( cscOptions == CompilerOptions . None ) ;
250+ settings . SwitchExpressions = false ;
252251 } ) ;
253252 }
254253
@@ -267,7 +266,10 @@ public async Task ReduceNesting([ValueSource(nameof(defaultOptions))] CompilerOp
267266 [ Test ]
268267 public async Task DelegateConstruction ( [ ValueSource ( nameof ( defaultOptionsWithMcs ) ) ] CompilerOptions cscOptions )
269268 {
270- await RunForLibrary ( cscOptions : cscOptions ) ;
269+ await RunForLibrary ( cscOptions : cscOptions , configureDecompiler : settings => {
270+ settings . QueryExpressions = false ;
271+ settings . NullableReferenceTypes = false ;
272+ } ) ;
271273 }
272274
273275 [ Test ]
@@ -293,9 +295,9 @@ public async Task Using([ValueSource(nameof(defaultOptions))] CompilerOptions cs
293295 {
294296 await RunForLibrary (
295297 cscOptions : cscOptions ,
296- decompilerSettings : new DecompilerSettings {
297- UseEnhancedUsing = false ,
298- FileScopedNamespaces = false ,
298+ configureDecompiler : settings => {
299+ settings . UseEnhancedUsing = false ;
300+ settings . FileScopedNamespaces = false ;
299301 }
300302 ) ;
301303 }
@@ -327,11 +329,11 @@ public async Task Generics([ValueSource(nameof(defaultOptions))] CompilerOptions
327329 [ Test ]
328330 public async Task Loops ( [ ValueSource ( nameof ( defaultOptionsWithMcs ) ) ] CompilerOptions cscOptions )
329331 {
330- DecompilerSettings settings = Tester . GetSettings ( cscOptions ) ;
331- // legacy csc generates a dead store in debug builds
332- settings . RemoveDeadStores = ( cscOptions == CompilerOptions . None ) ;
333- settings . UseExpressionBodyForCalculatedGetterOnlyProperties = false ;
334- await RunForLibrary ( cscOptions : cscOptions , decompilerSettings : settings ) ;
332+ await RunForLibrary ( cscOptions : cscOptions , configureDecompiler : settings => {
333+ // legacy csc generates a dead store in debug builds
334+ settings . RemoveDeadStores = ( cscOptions == CompilerOptions . None ) ;
335+ settings . UseExpressionBodyForCalculatedGetterOnlyProperties = false ;
336+ } ) ;
335337 }
336338
337339 [ Test ]
@@ -440,9 +442,7 @@ public async Task VariableNaming([ValueSource(nameof(defaultOptions))] CompilerO
440442 [ Test ]
441443 public async Task VariableNamingWithoutSymbols ( [ ValueSource ( nameof ( defaultOptions ) ) ] CompilerOptions cscOptions )
442444 {
443- var settings = Tester . GetSettings ( cscOptions ) ;
444- settings . UseDebugSymbols = false ;
445- await RunForLibrary ( cscOptions : cscOptions , decompilerSettings : settings ) ;
445+ await RunForLibrary ( cscOptions : cscOptions , configureDecompiler : settings => settings . UseDebugSymbols = false ) ;
446446 }
447447
448448 [ Test ]
@@ -474,7 +474,7 @@ public async Task AsyncUsing([ValueSource(nameof(roslyn3OrNewerOptions))] Compil
474474 {
475475 await RunForLibrary (
476476 cscOptions : cscOptions ,
477- decompilerSettings : new DecompilerSettings { UseEnhancedUsing = false , FileScopedNamespaces = false }
477+ configureDecompiler : settings => { settings . UseEnhancedUsing = false ; }
478478 ) ;
479479 }
480480
@@ -499,7 +499,7 @@ public async Task NativeInts([ValueSource(nameof(roslyn3OrNewerWithNet40Options)
499499 [ Test ]
500500 public async Task FileScopedNamespaces ( [ ValueSource ( nameof ( roslyn4OrNewerOptions ) ) ] CompilerOptions cscOptions )
501501 {
502- await RunForLibrary ( cscOptions : cscOptions , decompilerSettings : new DecompilerSettings ( ) ) ;
502+ await RunForLibrary ( cscOptions : cscOptions , configureDecompiler : settings => settings . FileScopedNamespaces = true ) ;
503503 }
504504
505505 [ Test ]
@@ -586,6 +586,12 @@ public async Task OptionalArguments([ValueSource(nameof(defaultOptions))] Compil
586586 await RunForLibrary ( cscOptions : cscOptions ) ;
587587 }
588588
589+ [ Test ]
590+ public async Task Comparisons ( [ ValueSource ( nameof ( defaultOptions ) ) ] CompilerOptions cscOptions )
591+ {
592+ await RunForLibrary ( cscOptions : cscOptions ) ;
593+ }
594+
589595 [ Test ]
590596 public async Task ConstantsTests ( [ ValueSource ( nameof ( defaultOptions ) ) ] CompilerOptions cscOptions )
591597 {
@@ -595,7 +601,7 @@ public async Task ConstantsTests([ValueSource(nameof(defaultOptions))] CompilerO
595601 [ Test ]
596602 public async Task Issue1080 ( [ ValueSource ( nameof ( roslynOnlyOptions ) ) ] CompilerOptions cscOptions )
597603 {
598- await RunForLibrary ( cscOptions : cscOptions , decompilerSettings : new DecompilerSettings ( CSharp . LanguageVersion . CSharp6 ) ) ;
604+ await RunForLibrary ( cscOptions : cscOptions , configureDecompiler : settings => settings . SetLanguageVersion ( CSharp . LanguageVersion . CSharp6 ) ) ;
599605 }
600606
601607 [ Test ]
@@ -706,12 +712,12 @@ public async Task MetadataAttributes([ValueSource(nameof(defaultOptions))] Compi
706712 await RunForLibrary ( cscOptions : cscOptions ) ;
707713 }
708714
709- async Task RunForLibrary ( [ CallerMemberName ] string testName = null , AssemblerOptions asmOptions = AssemblerOptions . None , CompilerOptions cscOptions = CompilerOptions . None , DecompilerSettings decompilerSettings = null )
715+ async Task RunForLibrary ( [ CallerMemberName ] string testName = null , AssemblerOptions asmOptions = AssemblerOptions . None , CompilerOptions cscOptions = CompilerOptions . None , Action < DecompilerSettings > configureDecompiler = null )
710716 {
711- await Run ( testName , asmOptions | AssemblerOptions . Library , cscOptions | CompilerOptions . Library , decompilerSettings ) ;
717+ await Run ( testName , asmOptions | AssemblerOptions . Library , cscOptions | CompilerOptions . Library , configureDecompiler ) ;
712718 }
713719
714- async Task Run ( [ CallerMemberName ] string testName = null , AssemblerOptions asmOptions = AssemblerOptions . None , CompilerOptions cscOptions = CompilerOptions . None , DecompilerSettings decompilerSettings = null )
720+ async Task Run ( [ CallerMemberName ] string testName = null , AssemblerOptions asmOptions = AssemblerOptions . None , CompilerOptions cscOptions = CompilerOptions . None , Action < DecompilerSettings > configureDecompiler = null )
715721 {
716722 var csFile = Path . Combine ( TestCasePath , testName + ".cs" ) ;
717723 var exeFile = TestsAssemblyOutput . GetFilePath ( TestCasePath , testName , Tester . GetSuffix ( cscOptions ) + ".exe" ) ;
@@ -733,7 +739,9 @@ async Task Run([CallerMemberName] string testName = null, AssemblerOptions asmOp
733739 }
734740
735741 // 2. Decompile
736- var decompiled = await Tester . DecompileCSharp ( exeFile , decompilerSettings ?? Tester . GetSettings ( cscOptions ) ) . ConfigureAwait ( false ) ;
742+ var settings = Tester . GetSettings ( cscOptions ) ;
743+ configureDecompiler ? . Invoke ( settings ) ;
744+ var decompiled = await Tester . DecompileCSharp ( exeFile , settings ) . ConfigureAwait ( false ) ;
737745
738746 // 3. Compile
739747 CodeAssert . FilesAreEqual ( csFile , decompiled , Tester . GetPreprocessorSymbols ( cscOptions ) . Append ( "EXPECTED_OUTPUT" ) . ToArray ( ) ) ;
0 commit comments