提交 1b3e246c 编写于 作者: B Brett Forsgren

Merge pull request #5480 from diryboy/FixPropgTooltip2

Show property accessor accessibility in CSharp QuickInfo
...@@ -1332,6 +1332,28 @@ void M() ...@@ -1332,6 +1332,28 @@ void M()
MainDescription("DateTime C.Prop { get; set; }")); MainDescription("DateTime C.Prop { get; set; }"));
} }
[Fact, Trait(Traits.Feature, Traits.Features.QuickInfo)]
public void LocalProperty_Minimal_PrivateSet()
{
TestInClass(@"public DateTime Prop { get; private set; }
void M()
{
P$$rop.ToString();
}",
MainDescription("DateTime C.Prop { get; private set; }"));
}
[Fact, Trait(Traits.Feature, Traits.Features.QuickInfo)]
public void LocalProperty_Minimal_PrivateSet1()
{
TestInClass(@"protected internal int Prop { get; private set; }
void M()
{
P$$rop.ToString();
}",
MainDescription("int C.Prop { get; private set; }"));
}
[Fact, Trait(Traits.Feature, Traits.Features.QuickInfo)] [Fact, Trait(Traits.Feature, Traits.Features.QuickInfo)]
public void LocalProperty_Qualified() public void LocalProperty_Qualified()
{ {
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. // Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.CodeAnalysis.Classification; using Microsoft.CodeAnalysis.Classification;
...@@ -27,6 +28,32 @@ protected class SymbolDescriptionBuilder : AbstractSymbolDescriptionBuilder ...@@ -27,6 +28,32 @@ protected class SymbolDescriptionBuilder : AbstractSymbolDescriptionBuilder
.AddMemberOptions(SymbolDisplayMemberOptions.IncludeConstantValue) .AddMemberOptions(SymbolDisplayMemberOptions.IncludeConstantValue)
.AddParameterOptions(SymbolDisplayParameterOptions.IncludeDefaultValue); .AddParameterOptions(SymbolDisplayParameterOptions.IncludeDefaultValue);
private static readonly SymbolDisplayFormat s_propertySignatureDisplayFormat =
new SymbolDisplayFormat(
globalNamespaceStyle: SymbolDisplayGlobalNamespaceStyle.Omitted,
genericsOptions: SymbolDisplayGenericsOptions.IncludeTypeParameters | SymbolDisplayGenericsOptions.IncludeTypeConstraints,
memberOptions:
SymbolDisplayMemberOptions.IncludeAccessibility |
SymbolDisplayMemberOptions.IncludeParameters |
SymbolDisplayMemberOptions.IncludeType |
SymbolDisplayMemberOptions.IncludeContainingType,
kindOptions:
SymbolDisplayKindOptions.IncludeMemberKeyword,
propertyStyle:
SymbolDisplayPropertyStyle.ShowReadWriteDescriptor,
parameterOptions:
SymbolDisplayParameterOptions.IncludeName |
SymbolDisplayParameterOptions.IncludeType |
SymbolDisplayParameterOptions.IncludeParamsRefOut |
SymbolDisplayParameterOptions.IncludeExtensionThis |
SymbolDisplayParameterOptions.IncludeDefaultValue |
SymbolDisplayParameterOptions.IncludeOptionalBrackets,
localOptions: SymbolDisplayLocalOptions.IncludeType,
miscellaneousOptions:
SymbolDisplayMiscellaneousOptions.EscapeKeywordIdentifiers |
SymbolDisplayMiscellaneousOptions.UseSpecialTypes |
SymbolDisplayMiscellaneousOptions.UseErrorTypeSymbolName);
public SymbolDescriptionBuilder( public SymbolDescriptionBuilder(
ISymbolDisplayService displayService, ISymbolDisplayService displayService,
SemanticModel semanticModel, SemanticModel semanticModel,
...@@ -74,6 +101,20 @@ protected override void AddAwaitableExtensionPrefix() ...@@ -74,6 +101,20 @@ protected override void AddAwaitableExtensionPrefix()
Space()); Space());
} }
protected override void AddDescriptionForProperty(IPropertySymbol symbol)
{
if (symbol.ContainingType?.TypeKind == TypeKind.Interface)
{
base.AddDescriptionForProperty(symbol);
}
else
{
var fullParts = ToMinimalDisplayParts(symbol, s_propertySignatureDisplayFormat);
var neededParts = fullParts.SkipWhile(p => p.Symbol == null);
AddToGroup(SymbolDescriptionGroups.MainDescription, neededParts);
}
}
protected override Task<IEnumerable<SymbolDisplayPart>> GetInitializerSourcePartsAsync( protected override Task<IEnumerable<SymbolDisplayPart>> GetInitializerSourcePartsAsync(
ISymbol symbol) ISymbol symbol)
{ {
......
...@@ -533,7 +533,7 @@ private async Task AddDescriptionForParameterAsync(IParameterSymbol symbol) ...@@ -533,7 +533,7 @@ private async Task AddDescriptionForParameterAsync(IParameterSymbol symbol)
ToMinimalDisplayParts(symbol, MinimallyQualifiedFormatWithConstants)); ToMinimalDisplayParts(symbol, MinimallyQualifiedFormatWithConstants));
} }
private void AddDescriptionForProperty(IPropertySymbol symbol) protected virtual void AddDescriptionForProperty(IPropertySymbol symbol)
{ {
if (symbol.IsIndexer) if (symbol.IsIndexer)
{ {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册