/// <summary> /// Creates a new DecompilerSettings instance with initial settings /// appropriate for the specified language version. /// </summary> /// <remarks> /// This does not imply that the resulting /// </remarks> public DecompilerSettings(CSharp.LanguageVersion languageVersion) { // By default, all decompiler features are enabled. // Disable some of them based on language version: if (languageVersion < CSharp.LanguageVersion.CSharp2) { anonymousMethods = false; liftNullables = false; yieldReturn = false; useImplicitMethodGroupConversion = false; } if (languageVersion < CSharp.LanguageVersion.CSharp3) { anonymousTypes = false; objectCollectionInitializers = false; automaticProperties = false; extensionMethods = false; queryExpressions = false; expressionTrees = false; } if (languageVersion < CSharp.LanguageVersion.CSharp4) { dynamic = false; namedArguments = false; optionalArguments = false; } if (languageVersion < CSharp.LanguageVersion.CSharp5) { asyncAwait = false; } if (languageVersion < CSharp.LanguageVersion.CSharp6) { awaitInCatchFinally = false; useExpressionBodyForCalculatedGetterOnlyProperties = false; nullPropagation = false; stringInterpolation = false; dictionaryInitializers = false; extensionMethodsInCollectionInitializers = false; } if (languageVersion < CSharp.LanguageVersion.CSharp7) { outVariables = false; tupleTypes = false; tupleConversions = false; discards = false; localFunctions = false; } if (languageVersion < CSharp.LanguageVersion.CSharp7_2) { introduceReadonlyAndInModifiers = false; introduceRefModifiersOnStructs = false; nonTrailingNamedArguments = false; } if (languageVersion < CSharp.LanguageVersion.CSharp7_3) { //introduceUnmanagedTypeConstraint = false; stackAllocInitializers = false; tupleComparisons = false; } }
/// <summary> /// Creates a new DecompilerSettings instance with initial settings /// appropriate for the specified language version. /// </summary> /// <remarks> /// This does not imply that the resulting /// </remarks> public DecompilerSettings(CSharp.LanguageVersion languageVersion) { // By default, all decompiler features are enabled. // Disable some of them based on language version: if (languageVersion < CSharp.LanguageVersion.CSharp2) { anonymousMethods = false; liftNullables = false; yieldReturn = false; } if (languageVersion < CSharp.LanguageVersion.CSharp3) { anonymousTypes = false; objectCollectionInitializers = false; automaticProperties = false; queryExpressions = false; expressionTrees = false; } if (languageVersion < CSharp.LanguageVersion.CSharp4) { // * dynamic (not supported yet) // * named and optional arguments (not supported yet) } if (languageVersion < CSharp.LanguageVersion.CSharp5) { asyncAwait = false; } if (languageVersion < CSharp.LanguageVersion.CSharp6) { awaitInCatchFinally = false; useExpressionBodyForCalculatedGetterOnlyProperties = false; nullPropagation = false; stringInterpolation = false; dictionaryInitializers = false; } if (languageVersion < CSharp.LanguageVersion.CSharp7) { outVariables = false; discards = false; } if (languageVersion < CSharp.LanguageVersion.CSharp7_2) { introduceRefAndReadonlyModifiersOnStructs = false; } if (languageVersion < CSharp.LanguageVersion.CSharp7_3) { //introduceUnmanagedTypeConstraint = false; //... } }
/// <summary> /// Creates a new DecompilerSettings instance with initial settings /// appropriate for the specified language version. /// </summary> /// <remarks> /// This does not imply that the resulting code strictly uses only language features from that version. /// Language constructs like generics or ref locals cannot be removed from the compiled code. /// </remarks> public DecompilerSettings(CSharp.LanguageVersion languageVersion) { SetLanguageVersion(languageVersion); }
private static async Task VerifyCSCodeFixAsync(string source, string codeFix, CSharp.LanguageVersion languageVersion, ReferenceAssemblies referenceAssemblies) { await new VerifyCS.Test { LanguageVersion = languageVersion, ReferenceAssemblies = referenceAssemblies, TestCode = source, FixedCode = codeFix }.RunAsync(); }