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

Pass options

上级 9a702ff8
......@@ -7,6 +7,7 @@
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CodeGeneration;
using Microsoft.CodeAnalysis.Editing;
using Microsoft.CodeAnalysis.Options;
namespace Microsoft.VisualStudio.LanguageServices.Implementation.CodeModel
{
......@@ -17,12 +18,13 @@ namespace Microsoft.VisualStudio.LanguageServices.Implementation.CodeModel
public partial class AbstractCodeModelObject
{
private static CodeGenerationOptions GetCodeGenerationOptions(
EnvDTE.vsCMAccess access, ParseOptions parseOptions)
EnvDTE.vsCMAccess access, ParseOptions parseOptions, OptionSet options)
{
var generateDefaultAccessibility = (access & EnvDTE.vsCMAccess.vsCMAccessDefault) == 0;
return new CodeGenerationOptions(
generateDefaultAccessibility: generateDefaultAccessibility,
parseOptions: parseOptions);
parseOptions: parseOptions,
options: options);
}
protected SyntaxNode CreateConstructorDeclaration(SyntaxNode containerNode, string typeName, EnvDTE.vsCMAccess access)
......@@ -38,7 +40,8 @@ protected SyntaxNode CreateConstructorDeclaration(SyntaxNode containerNode, stri
return CodeGenerationService.CreateMethodDeclaration(
newMethodSymbol, destination,
options: GetCodeGenerationOptions(access, containerNode.SyntaxTree.Options));
options: GetCodeGenerationOptions(
access, containerNode.SyntaxTree.Options, options: null));
}
protected SyntaxNode CreateDestructorDeclaration(SyntaxNode containerNode, string typeName)
......@@ -67,7 +70,8 @@ protected SyntaxNode CreateDelegateTypeDeclaration(SyntaxNode containerNode, str
return CodeGenerationService.CreateNamedTypeDeclaration(
newTypeSymbol, destination,
options: GetCodeGenerationOptions(access, containerNode.SyntaxTree.Options));
options: GetCodeGenerationOptions(
access, containerNode.SyntaxTree.Options, options: null));
}
protected SyntaxNode CreateEventDeclaration(SyntaxNode containerNode, string name, EnvDTE.vsCMAccess access, ITypeSymbol type, bool createPropertyStyleEvent)
......@@ -114,7 +118,8 @@ protected SyntaxNode CreateEventDeclaration(SyntaxNode containerNode, string nam
return CodeGenerationService.CreateEventDeclaration(
newEventSymbol, destination,
options: GetCodeGenerationOptions(access, containerNode.SyntaxTree.Options));
options: GetCodeGenerationOptions(
access, containerNode.SyntaxTree.Options, options: null));
}
protected SyntaxNode CreateFieldDeclaration(SyntaxNode containerNode, string name, EnvDTE.vsCMAccess access, ITypeSymbol type)
......@@ -130,7 +135,8 @@ protected SyntaxNode CreateFieldDeclaration(SyntaxNode containerNode, string nam
return CodeGenerationService.CreateFieldDeclaration(
newFieldSymbol, destination,
options: GetCodeGenerationOptions(access, containerNode.SyntaxTree.Options));
options: GetCodeGenerationOptions(
access, containerNode.SyntaxTree.Options, options: null));
}
protected SyntaxNode CreateMethodDeclaration(SyntaxNode containerNode, string name, EnvDTE.vsCMAccess access, ITypeSymbol returnType)
......@@ -148,7 +154,8 @@ protected SyntaxNode CreateMethodDeclaration(SyntaxNode containerNode, string na
typeParameters: default,
parameters: default);
var codeGenerationOptions = GetCodeGenerationOptions(access, containerNode.SyntaxTree.Options);
var codeGenerationOptions = GetCodeGenerationOptions(
access, containerNode.SyntaxTree.Options, options: null);
if (destination == CodeGenerationDestination.InterfaceType)
{
// Generating method with body is allowed when targeting an interface,
......@@ -161,7 +168,14 @@ protected SyntaxNode CreateMethodDeclaration(SyntaxNode containerNode, string na
options: codeGenerationOptions);
}
protected SyntaxNode CreatePropertyDeclaration(SyntaxNode containerNode, string name, bool generateGetter, bool generateSetter, EnvDTE.vsCMAccess access, ITypeSymbol type)
protected SyntaxNode CreatePropertyDeclaration(
SyntaxNode containerNode,
string name,
bool generateGetter,
bool generateSetter,
EnvDTE.vsCMAccess access,
ITypeSymbol type,
OptionSet options)
{
var destination = CodeModelService.GetDestination(containerNode);
......@@ -210,7 +224,8 @@ protected SyntaxNode CreatePropertyDeclaration(SyntaxNode containerNode, string
return CodeGenerationService.CreatePropertyDeclaration(
newPropertySymbol, destination,
options: GetCodeGenerationOptions(access, containerNode.SyntaxTree.Options));
options: GetCodeGenerationOptions(
access, containerNode.SyntaxTree.Options, options));
}
protected SyntaxNode CreateNamespaceDeclaration(SyntaxNode containerNode, string name)
......@@ -249,7 +264,8 @@ protected SyntaxNode CreateNamespaceDeclaration(SyntaxNode containerNode, string
return CodeGenerationService.CreateNamedTypeDeclaration(
newTypeSymbol, destination,
options: GetCodeGenerationOptions(access, containerNode.SyntaxTree.Options));
options: GetCodeGenerationOptions(
access, containerNode.SyntaxTree.Options, options: null));
}
}
}
......@@ -375,12 +375,16 @@ internal EnvDTE.CodeProperty AddProperty(SyntaxNode containerNode, string getter
var containerNodePosition = containerNode.SpanStart;
var semanticModel = GetSemanticModel();
var options = GetDocument().GetOptionsAsync(CancellationToken.None).WaitAndGetResult_CodeModel(CancellationToken.None);
var propertyType = CodeModelService.GetTypeSymbol(type, semanticModel, containerNodePosition);
var newProperty = CreatePropertyDeclaration(containerNode,
CodeModelService.GetUnescapedName(isGetterPresent ? getterName : putterName),
isGetterPresent,
isPutterPresent,
access, propertyType);
var newProperty = CreatePropertyDeclaration(
containerNode,
CodeModelService.GetUnescapedName(isGetterPresent ? getterName : putterName),
isGetterPresent,
isPutterPresent,
access,
propertyType,
options);
var insertionIndex = CodeModelService.PositionVariantToMemberInsertionIndex(position, containerNode, fileCodeModel: this);
newProperty = InsertMember(containerNode, newProperty, insertionIndex);
......
......@@ -2187,11 +2187,7 @@ class C
{
string Name
{
get
{
return default;
}
get => default;
set
{
}
......@@ -2241,13 +2237,7 @@ class C$$
<Code>
class C
{
string Name
{
get
{
return default;
}
}
string Name =&gt; default;
}
</Code>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册