提交 e70e9511 编写于 作者: C Cyrus Najmabadi

Pass options

上级 bf91e3f3
......@@ -951,10 +951,46 @@ public async Task AddIndexer2()
parameters: Parameters(Parameter(typeof(int), "i")),
getStatements: "return String.Empty;",
isIndexer: true,
options: new Dictionary<OptionKey2, object> {
{ CSharpCodeStyleOptions.PreferExpressionBodiedAccessors, CSharpCodeStyleOptions.NeverWithSilentEnforcement },
{ CSharpCodeStyleOptions.PreferExpressionBodiedIndexers, CSharpCodeStyleOptions.NeverWithSilentEnforcement },
});
codeGenerationOptions: new CodeGenerationOptions(
options: new TestOptionSet(new Dictionary<OptionKey2, object> {
{ CSharpCodeStyleOptions.PreferExpressionBodiedAccessors, CSharpCodeStyleOptions.NeverWithSilentEnforcement },
{ CSharpCodeStyleOptions.PreferExpressionBodiedIndexers, CSharpCodeStyleOptions.NeverWithSilentEnforcement },
})));
}
internal class TestOptionSet : OptionSet
{
private readonly IDictionary<OptionKey2, object> _values;
public TestOptionSet(Dictionary<OptionKey2, object> 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<OptionKey> 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)]
......
......@@ -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<INamespaceOrTypeSymbol>(destSpan, semanticModel);
var destination = context.GetDestination();
if (destination.IsType)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册