提交 370d73ca 编写于 作者: C Cyrus Najmabadi

Properly show defaults for value types in sighelp

上级 4faf4ad5
......@@ -166,11 +166,8 @@ internal ChangeSignatureResult ChangeSignatureWithContext(ChangeSignatureAnalyze
internal ChangeSignatureOptionsResult GetChangeSignatureOptions(ChangeSignatureAnalyzedContext context)
{
var notificationService = context.Solution.Workspace.Services.GetService<INotificationService>();
var changeSignatureOptionsService = context.Solution.Workspace.Services.GetService<IChangeSignatureOptionsService>();
var isExtensionMethod = context.Symbol is IMethodSymbol && (context.Symbol as IMethodSymbol).IsExtensionMethod;
return changeSignatureOptionsService.GetChangeSignatureOptions(context.Symbol, context.ParameterConfiguration, notificationService);
return changeSignatureOptionsService.GetChangeSignatureOptions(context.Symbol, context.ParameterConfiguration);
}
private static async Task<ImmutableArray<ReferencedSymbol>> FindChangeSignatureReferencesAsync(
......
......@@ -3,15 +3,11 @@
// See the LICENSE file in the project root for more information.
using Microsoft.CodeAnalysis.Host;
using Microsoft.CodeAnalysis.Notification;
namespace Microsoft.CodeAnalysis.ChangeSignature
{
internal interface IChangeSignatureOptionsService : IWorkspaceService
{
ChangeSignatureOptionsResult GetChangeSignatureOptions(
ISymbol symbol,
ParameterConfiguration parameters,
INotificationService notificationService);
ChangeSignatureOptionsResult GetChangeSignatureOptions(ISymbol symbol, ParameterConfiguration parameters);
}
}
......@@ -20,11 +20,9 @@ namespace Microsoft.VisualStudio.LanguageServices.Implementation.ChangeSignature
{
internal class ChangeSignatureDialogViewModel : AbstractNotifyPropertyChanged
{
private readonly INotificationService _notificationService;
private readonly IClassificationFormatMap _classificationFormatMap;
private readonly ClassificationTypeMap _classificationTypeMap;
private readonly ParameterConfiguration _originalParameterConfiguration;
private readonly ISymbol _symbol;
private readonly ParameterViewModel _thisParameter;
private readonly List<ParameterViewModel> _parameterGroup1;
......@@ -34,10 +32,9 @@ internal class ChangeSignatureDialogViewModel : AbstractNotifyPropertyChanged
private ImmutableArray<SymbolDisplayPart> _declarationParts;
private bool _previewChanges;
internal ChangeSignatureDialogViewModel(INotificationService notificationService, ParameterConfiguration parameters, ISymbol symbol, IClassificationFormatMap classificationFormatMap, ClassificationTypeMap classificationTypeMap)
internal ChangeSignatureDialogViewModel(ParameterConfiguration parameters, ISymbol symbol, IClassificationFormatMap classificationFormatMap, ClassificationTypeMap classificationTypeMap)
{
_originalParameterConfiguration = parameters;
_notificationService = notificationService;
_classificationFormatMap = classificationFormatMap;
_classificationTypeMap = classificationTypeMap;
......@@ -52,7 +49,6 @@ internal ChangeSignatureDialogViewModel(INotificationService notificationService
_paramsParameter = new ParameterViewModel(this, parameters.ParamsParameter);
}
_symbol = symbol;
_declarationParts = symbol.ToDisplayParts(s_symbolDeclarationDisplayFormat);
_parameterGroup1 = parameters.ParametersWithoutDefaultValues.Select(p => new ParameterViewModel(this, p)).ToList();
......@@ -509,25 +505,22 @@ public string Default
get
{
if (!ParameterSymbol.HasExplicitDefaultValue)
{
return string.Empty;
}
switch (ParameterSymbol.Language)
return ParameterSymbol.Language switch
{
case LanguageNames.CSharp:
return NullText("null");
case LanguageNames.VisualBasic:
return NullText("Nothing");
}
return string.Empty;
LanguageNames.CSharp => NullText("null", "default"),
LanguageNames.VisualBasic => NullText("Nothing", "Nothing"),
_ => string.Empty,
};
string NullText(string @null)
string NullText(string @null, string @default)
{
return ParameterSymbol.ExplicitDefaultValue == null ? @null :
ParameterSymbol.ExplicitDefaultValue is string ? "\"" + ParameterSymbol.ExplicitDefaultValue.ToString() + "\"" :
ParameterSymbol.ExplicitDefaultValue.ToString();
var value = ParameterSymbol.ExplicitDefaultValue;
return value == null
? ParameterSymbol.Type.IsReferenceType ? @null : @default
: value is string ? "\"" + value.ToString() + "\"" : value.ToString();
}
}
}
......
......@@ -25,9 +25,9 @@ public VisualStudioChangeSignatureOptionsService(IClassificationFormatMapService
_classificationTypeMap = classificationTypeMap;
}
public ChangeSignatureOptionsResult GetChangeSignatureOptions(ISymbol symbol, ParameterConfiguration parameters, INotificationService notificationService)
public ChangeSignatureOptionsResult GetChangeSignatureOptions(ISymbol symbol, ParameterConfiguration parameters)
{
var viewModel = new ChangeSignatureDialogViewModel(notificationService, parameters, symbol, _classificationFormatMap, _classificationTypeMap);
var viewModel = new ChangeSignatureDialogViewModel(parameters, symbol, _classificationFormatMap, _classificationTypeMap);
var dialog = new ChangeSignatureDialog(viewModel);
var result = dialog.ShowModal();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册