From e70e95110acae33fd6f44fbe5072bb6d49613ccc Mon Sep 17 00:00:00 2001 From: Cyrus Najmabadi Date: Mon, 27 Jul 2020 19:00:50 -0700 Subject: [PATCH] Pass options --- .../CodeGenerationTests.CSharp.cs | 44 +++++++++++++++++-- .../CodeGeneration/CodeGenerationTests.cs | 8 ++++ 2 files changed, 48 insertions(+), 4 deletions(-) diff --git a/src/EditorFeatures/Test/CodeGeneration/CodeGenerationTests.CSharp.cs b/src/EditorFeatures/Test/CodeGeneration/CodeGenerationTests.CSharp.cs index f102754a70c..845ffe6bf28 100644 --- a/src/EditorFeatures/Test/CodeGeneration/CodeGenerationTests.CSharp.cs +++ b/src/EditorFeatures/Test/CodeGeneration/CodeGenerationTests.CSharp.cs @@ -951,10 +951,46 @@ public async Task AddIndexer2() parameters: Parameters(Parameter(typeof(int), "i")), getStatements: "return String.Empty;", isIndexer: true, - options: new Dictionary { - { CSharpCodeStyleOptions.PreferExpressionBodiedAccessors, CSharpCodeStyleOptions.NeverWithSilentEnforcement }, - { CSharpCodeStyleOptions.PreferExpressionBodiedIndexers, CSharpCodeStyleOptions.NeverWithSilentEnforcement }, - }); + codeGenerationOptions: new CodeGenerationOptions( + options: new TestOptionSet(new Dictionary { + { CSharpCodeStyleOptions.PreferExpressionBodiedAccessors, CSharpCodeStyleOptions.NeverWithSilentEnforcement }, + { CSharpCodeStyleOptions.PreferExpressionBodiedIndexers, CSharpCodeStyleOptions.NeverWithSilentEnforcement }, + }))); + } + + internal class TestOptionSet : OptionSet + { + private readonly IDictionary _values; + + public TestOptionSet(Dictionary values) + { + _values = values; + } + + private protected override object GetOptionCore(OptionKey optionKey) + { + Contract.ThrowIfFalse(_values.TryGetValue( + new OptionKey2((IOption2)optionKey.Option, optionKey.Language), out var value)); + + return value; + } + + public override OptionSet WithChangedOption(OptionKey optionAndLanguage, object value) + { + throw new NotImplementedException(); + } + + internal override IEnumerable GetChangedOptions(OptionSet optionSet) + { + foreach (var kvp in _values) + { + var currentValue = optionSet.GetOption(kvp.Key); + if (!object.Equals(currentValue, kvp.Value)) + { + yield return new OptionKey(kvp.Key.Option, kvp.Key.Language); + } + } + } } [Fact, Trait(Traits.Feature, Traits.Features.CodeGeneration)] diff --git a/src/EditorFeatures/Test/CodeGeneration/CodeGenerationTests.cs b/src/EditorFeatures/Test/CodeGeneration/CodeGenerationTests.cs index cc4a7a6c054..aba891912db 100644 --- a/src/EditorFeatures/Test/CodeGeneration/CodeGenerationTests.cs +++ b/src/EditorFeatures/Test/CodeGeneration/CodeGenerationTests.cs @@ -420,6 +420,10 @@ public partial class CodeGenerationTests getAccessor, setAccessor, isIndexer); + + var docOptions = await context.Document.GetOptionsAsync(); + codeGenerationOptions ??= new CodeGenerationOptions(); + codeGenerationOptions = codeGenerationOptions.With(options: codeGenerationOptions.Options ?? docOptions); context.Result = await context.Service.AddPropertyAsync(context.Solution, (INamedTypeSymbol)context.GetDestination(), property, codeGenerationOptions); } @@ -546,6 +550,10 @@ public partial class CodeGenerationTests .GetDocument(documentId) .GetSemanticModelAsync(); + var docOptions = await context.Document.GetOptionsAsync(); + codeGenerationOptions ??= new CodeGenerationOptions(); + codeGenerationOptions = codeGenerationOptions.With(options: codeGenerationOptions.Options ?? docOptions); + var symbol = TestContext.GetSelectedSymbol(destSpan, semanticModel); var destination = context.GetDestination(); if (destination.IsType) -- GitLab