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

Merge pull request #5480 from diryboy/FixPropgTooltip2

Show property accessor accessibility in CSharp QuickInfo
......@@ -1332,6 +1332,28 @@ void M()
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)]
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.
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.Classification;
......@@ -27,6 +28,32 @@ protected class SymbolDescriptionBuilder : AbstractSymbolDescriptionBuilder
.AddMemberOptions(SymbolDisplayMemberOptions.IncludeConstantValue)
.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(
ISymbolDisplayService displayService,
SemanticModel semanticModel,
......@@ -74,6 +101,20 @@ protected override void AddAwaitableExtensionPrefix()
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(
ISymbol symbol)
{
......
......@@ -533,7 +533,7 @@ private async Task AddDescriptionForParameterAsync(IParameterSymbol symbol)
ToMinimalDisplayParts(symbol, MinimallyQualifiedFormatWithConstants));
}
private void AddDescriptionForProperty(IPropertySymbol symbol)
protected virtual void AddDescriptionForProperty(IPropertySymbol symbol)
{
if (symbol.IsIndexer)
{
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册