提交 63201e71 编写于 作者: J Jason Malinowski

Deduplicate code to generate the symbol display string for navigation

上级 54b06504
...@@ -44,20 +44,7 @@ public DeclaredSymbolNavigableItem(Document document, DeclaredSymbolInfo declare ...@@ -44,20 +44,7 @@ public DeclaredSymbolNavigableItem(Document document, DeclaredSymbolInfo declare
return null; return null;
} }
var symbolDisplayService = Document.GetLanguageService<ISymbolDisplayService>(); return GetSymbolDisplayString(Document.Project, Symbol);
switch (Symbol.Kind)
{
case SymbolKind.NamedType:
return symbolDisplayService.ToDisplayString(Symbol, s_shortFormatWithModifiers);
case SymbolKind.Method:
return Symbol.IsStaticConstructor()
? symbolDisplayService.ToDisplayString(Symbol, s_shortFormatWithModifiers)
: symbolDisplayService.ToDisplayString(Symbol, s_shortFormat);
default:
return symbolDisplayService.ToDisplayString(Symbol, s_shortFormat);
}
} }
catch (Exception e) when (FatalError.Report(e)) catch (Exception e) when (FatalError.Report(e))
{ {
......
...@@ -28,21 +28,7 @@ private class SymbolLocationNavigableItem : INavigableItem ...@@ -28,21 +28,7 @@ private class SymbolLocationNavigableItem : INavigableItem
_lazyDisplayName = new Lazy<string>(() => _lazyDisplayName = new Lazy<string>(() =>
{ {
var symbolDisplayService = this.Document.Project.LanguageServices.GetService<ISymbolDisplayService>(); return GetSymbolDisplayString(Document.Project, _symbol);
switch (symbol.Kind)
{
case SymbolKind.NamedType:
return symbolDisplayService.ToDisplayString(_symbol, s_shortFormatWithModifiers);
case SymbolKind.Method:
return _symbol.IsStaticConstructor()
? symbolDisplayService.ToDisplayString(_symbol, s_shortFormatWithModifiers)
: symbolDisplayService.ToDisplayString(_symbol, s_shortFormat);
default:
return symbolDisplayService.ToDisplayString(_symbol, s_shortFormat);
}
}); });
} }
......
...@@ -2,8 +2,10 @@ ...@@ -2,8 +2,10 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Threading;
using Microsoft.CodeAnalysis.FindSymbols; using Microsoft.CodeAnalysis.FindSymbols;
using Microsoft.CodeAnalysis.GeneratedCodeRecognition; using Microsoft.CodeAnalysis.GeneratedCodeRecognition;
using Microsoft.CodeAnalysis.LanguageServices;
using Microsoft.CodeAnalysis.Shared.Extensions; using Microsoft.CodeAnalysis.Shared.Extensions;
using Roslyn.Utilities; using Roslyn.Utilities;
...@@ -21,6 +23,7 @@ public static INavigableItem GetItemFromDeclaredSymbolInfo(DeclaredSymbolInfo de ...@@ -21,6 +23,7 @@ public static INavigableItem GetItemFromDeclaredSymbolInfo(DeclaredSymbolInfo de
return new DeclaredSymbolNavigableItem(document, declaredSymbolInfo); return new DeclaredSymbolNavigableItem(document, declaredSymbolInfo);
} }
public static IEnumerable<INavigableItem> GetItemsFromPreferredSourceLocations(Solution solution, ISymbol symbol) public static IEnumerable<INavigableItem> GetItemsFromPreferredSourceLocations(Solution solution, ISymbol symbol)
{ {
var locations = GetPreferredSourceLocations(solution, symbol); var locations = GetPreferredSourceLocations(solution, symbol);
...@@ -57,6 +60,24 @@ private static IEnumerable<Location> GetPreferredSourceLocations(ISymbol symbol) ...@@ -57,6 +60,24 @@ private static IEnumerable<Location> GetPreferredSourceLocations(ISymbol symbol)
: locations.Where(loc => loc.IsInSource); : locations.Where(loc => loc.IsInSource);
} }
public static string GetSymbolDisplayString(Project project, ISymbol symbol)
{
var symbolDisplayService = project.LanguageServices.GetRequiredService<ISymbolDisplayService>();
switch (symbol.Kind)
{
case SymbolKind.NamedType:
return symbolDisplayService.ToDisplayString(symbol, s_shortFormatWithModifiers);
case SymbolKind.Method:
return symbol.IsStaticConstructor()
? symbolDisplayService.ToDisplayString(symbol, s_shortFormatWithModifiers)
: symbolDisplayService.ToDisplayString(symbol, s_shortFormat);
default:
return symbolDisplayService.ToDisplayString(symbol, s_shortFormat);
}
}
private static readonly SymbolDisplayFormat s_shortFormat = private static readonly SymbolDisplayFormat s_shortFormat =
new SymbolDisplayFormat( new SymbolDisplayFormat(
globalNamespaceStyle: SymbolDisplayGlobalNamespaceStyle.OmittedAsContaining, globalNamespaceStyle: SymbolDisplayGlobalNamespaceStyle.OmittedAsContaining,
......
...@@ -96,6 +96,8 @@ private static Type[] GetNeutralAndCSharpAndVisualBasicTypes() ...@@ -96,6 +96,8 @@ private static Type[] GetNeutralAndCSharpAndVisualBasicTypes()
typeof(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxFactsService), typeof(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxFactsService),
typeof(CodeAnalysis.CSharp.CSharpSymbolDeclarationService), typeof(CodeAnalysis.CSharp.CSharpSymbolDeclarationService),
typeof(CodeAnalysis.VisualBasic.VisualBasicSymbolDeclarationService), typeof(CodeAnalysis.VisualBasic.VisualBasicSymbolDeclarationService),
typeof(CodeAnalysis.Editor.CSharp.LanguageServices.CSharpSymbolDisplayServiceFactory),
typeof(CodeAnalysis.Editor.VisualBasic.LanguageServices.VisualBasicSymbolDisplayServiceFactory),
typeof(CodeAnalysis.CSharp.Simplification.CSharpSimplificationService), typeof(CodeAnalysis.CSharp.Simplification.CSharpSimplificationService),
typeof(CodeAnalysis.VisualBasic.Simplification.VisualBasicSimplificationService), typeof(CodeAnalysis.VisualBasic.Simplification.VisualBasicSimplificationService),
typeof(CodeAnalysis.CSharp.Rename.CSharpRenameConflictLanguageService), typeof(CodeAnalysis.CSharp.Rename.CSharpRenameConflictLanguageService),
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册