提交 441c4c99 编写于 作者: C CyrusNajmabadi

Merge branch 'navigationPreferences2' into gotodefRefactor1

...@@ -89,7 +89,7 @@ private bool TryDisplayReferences(Tuple<IEnumerable<ReferencedSymbol>, Solution> ...@@ -89,7 +89,7 @@ private bool TryDisplayReferences(Tuple<IEnumerable<ReferencedSymbol>, Solution>
var solution = result.Item2; var solution = result.Item2;
var factory = solution.Workspace.Services.GetService<IDefinitionsAndReferencesFactory>(); var factory = solution.Workspace.Services.GetService<IDefinitionsAndReferencesFactory>();
var definitionsAndReferences = factory.CreateDefinitionsAndReferences( var definitionsAndReferences = factory.CreateDefinitionsAndReferences(
solution, result.Item1); solution, result.Item1, includeHiddenLocations: false);
foreach (var presenter in _referenceSymbolPresenters) foreach (var presenter in _referenceSymbolPresenters)
{ {
......
...@@ -40,7 +40,7 @@ public ProgressAdapter(Solution solution, IFindUsagesContext context) ...@@ -40,7 +40,7 @@ public ProgressAdapter(Solution solution, IFindUsagesContext context)
{ {
_solution = solution; _solution = solution;
_context = context; _context = context;
_definitionFactory = s => s.ToDefinitionItem(solution); _definitionFactory = s => s.ToDefinitionItem(solution, includeHiddenLocations: false);
} }
// Do nothing functions. The streaming far service doesn't care about // Do nothing functions. The streaming far service doesn't care about
...@@ -77,7 +77,7 @@ public async Task OnReferenceFoundAsync(SymbolAndProjectId definition, Reference ...@@ -77,7 +77,7 @@ public async Task OnReferenceFoundAsync(SymbolAndProjectId definition, Reference
} }
var referenceItem = location.TryCreateSourceReferenceItem( var referenceItem = location.TryCreateSourceReferenceItem(
GetDefinitionItem(definition)); GetDefinitionItem(definition), includeHiddenLocations: false);
if (referenceItem != null) if (referenceItem != null)
{ {
......
...@@ -36,7 +36,8 @@ public async Task FindImplementationsAsync(Document document, int position, IFin ...@@ -36,7 +36,8 @@ public async Task FindImplementationsAsync(Document document, int position, IFin
foreach (var implementation in tuple.Value.implementations) foreach (var implementation in tuple.Value.implementations)
{ {
var definitionItem = implementation.ToDefinitionItem(project.Solution); var definitionItem = implementation.ToDefinitionItem(
project.Solution, includeHiddenLocations: false);
await context.OnDefinitionFoundAsync(definitionItem).ConfigureAwait(false); await context.OnDefinitionFoundAsync(definitionItem).ConfigureAwait(false);
} }
} }
......
...@@ -66,14 +66,14 @@ internal static class GoToDefinitionHelpers ...@@ -66,14 +66,14 @@ internal static class GoToDefinitionHelpers
var options = project.Solution.Options; var options = project.Solution.Options;
definitions.Add(symbol.ToDefinitionItem(solution)); definitions.Add(symbol.ToDefinitionItem(solution, includeHiddenLocations: true));
var presenter = GetFindUsagesPresenter(streamingPresenters); var presenter = GetFindUsagesPresenter(streamingPresenters);
var result = presenter.NavigateToOrPresentItemsAsync( presenter.NavigateToOrPresentItemsAsync(
EditorFeaturesResources.Go_to_Definition, EditorFeaturesResources.Go_to_Definition,
definitions.ToImmutableAndFree()).WaitAndGetResult(cancellationToken); definitions.ToImmutableAndFree()).Wait(cancellationToken);
return result; return true;
} }
private static IStreamingFindUsagesPresenter GetFindUsagesPresenter( private static IStreamingFindUsagesPresenter GetFindUsagesPresenter(
......
...@@ -1069,7 +1069,7 @@ class C ...@@ -1069,7 +1069,7 @@ class C
<WorkItem(989476, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/989476")> <WorkItem(989476, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/989476")>
<WpfFact, Trait(Traits.Feature, Traits.Features.GoToDefinition)> <WpfFact, Trait(Traits.Feature, Traits.Features.GoToDefinition)>
Public Async Function TestCSharpPreferNongeneratedSourceLocations() As Task Public Async Function TestCSharpDoNotFilterGeneratedSourceLocations() As Task
Dim workspace = Dim workspace =
<Workspace> <Workspace>
<Project Language="C#" CommonReferences="true"> <Project Language="C#" CommonReferences="true">
...@@ -1083,7 +1083,7 @@ partial class [|C|] ...@@ -1083,7 +1083,7 @@ partial class [|C|]
} }
</Document> </Document>
<Document FilePath="Generated.g.i.cs"> <Document FilePath="Generated.g.i.cs">
partial class C partial class [|C|]
{ {
} }
</Document> </Document>
......
...@@ -17,7 +17,7 @@ namespace Microsoft.CodeAnalysis.FindUsages ...@@ -17,7 +17,7 @@ namespace Microsoft.CodeAnalysis.FindUsages
internal interface IDefinitionsAndReferencesFactory : IWorkspaceService internal interface IDefinitionsAndReferencesFactory : IWorkspaceService
{ {
DefinitionsAndReferences CreateDefinitionsAndReferences( DefinitionsAndReferences CreateDefinitionsAndReferences(
Solution solution, IEnumerable<ReferencedSymbol> referencedSymbols); Solution solution, IEnumerable<ReferencedSymbol> referencedSymbols, bool includeHiddenLocations);
DefinitionItem GetThirdPartyDefinitionItem(Solution solution, ISymbol definition); DefinitionItem GetThirdPartyDefinitionItem(Solution solution, ISymbol definition);
} }
...@@ -26,7 +26,7 @@ internal interface IDefinitionsAndReferencesFactory : IWorkspaceService ...@@ -26,7 +26,7 @@ internal interface IDefinitionsAndReferencesFactory : IWorkspaceService
internal class DefaultDefinitionsAndReferencesFactory : IDefinitionsAndReferencesFactory internal class DefaultDefinitionsAndReferencesFactory : IDefinitionsAndReferencesFactory
{ {
public DefinitionsAndReferences CreateDefinitionsAndReferences( public DefinitionsAndReferences CreateDefinitionsAndReferences(
Solution solution, IEnumerable<ReferencedSymbol> referencedSymbols) Solution solution, IEnumerable<ReferencedSymbol> referencedSymbols, bool includeHiddenLocations)
{ {
var definitions = ArrayBuilder<DefinitionItem>.GetInstance(); var definitions = ArrayBuilder<DefinitionItem>.GetInstance();
var references = ArrayBuilder<SourceReferenceItem>.GetInstance(); var references = ArrayBuilder<SourceReferenceItem>.GetInstance();
...@@ -39,7 +39,8 @@ internal class DefaultDefinitionsAndReferencesFactory : IDefinitionsAndReference ...@@ -39,7 +39,8 @@ internal class DefaultDefinitionsAndReferencesFactory : IDefinitionsAndReference
foreach (var referencedSymbol in referencedSymbols.OrderBy(GetPrecedence)) foreach (var referencedSymbol in referencedSymbols.OrderBy(GetPrecedence))
{ {
ProcessReferencedSymbol( ProcessReferencedSymbol(
solution, referencedSymbol, definitions, references, uniqueLocations); solution, referencedSymbol, definitions, references,
includeHiddenLocations, uniqueLocations);
} }
return new DefinitionsAndReferences( return new DefinitionsAndReferences(
...@@ -86,6 +87,7 @@ private static int GetPrecedence(ReferencedSymbol referencedSymbol) ...@@ -86,6 +87,7 @@ private static int GetPrecedence(ReferencedSymbol referencedSymbol)
ReferencedSymbol referencedSymbol, ReferencedSymbol referencedSymbol,
ArrayBuilder<DefinitionItem> definitions, ArrayBuilder<DefinitionItem> definitions,
ArrayBuilder<SourceReferenceItem> references, ArrayBuilder<SourceReferenceItem> references,
bool includeHiddenLocations,
HashSet<DocumentSpan> uniqueSpans) HashSet<DocumentSpan> uniqueSpans)
{ {
// See if this is a symbol we even want to present to the user. If not, // See if this is a symbol we even want to present to the user. If not,
...@@ -95,12 +97,15 @@ private static int GetPrecedence(ReferencedSymbol referencedSymbol) ...@@ -95,12 +97,15 @@ private static int GetPrecedence(ReferencedSymbol referencedSymbol)
return; return;
} }
var definitionItem = referencedSymbol.Definition.ToDefinitionItem(solution, uniqueSpans); var definitionItem = referencedSymbol.Definition.ToDefinitionItem(
solution, includeHiddenLocations, uniqueSpans);
definitions.Add(definitionItem); definitions.Add(definitionItem);
// Now, create the SourceReferenceItems for all the reference locations // Now, create the SourceReferenceItems for all the reference locations
// for this definition. // for this definition.
CreateReferences(referencedSymbol, references, definitionItem, uniqueSpans); CreateReferences(
referencedSymbol, references, definitionItem,
includeHiddenLocations, uniqueSpans);
// Finally, see if there are any third parties that want to add their // Finally, see if there are any third parties that want to add their
// own result to our collection. // own result to our collection.
...@@ -125,11 +130,13 @@ private static int GetPrecedence(ReferencedSymbol referencedSymbol) ...@@ -125,11 +130,13 @@ private static int GetPrecedence(ReferencedSymbol referencedSymbol)
ReferencedSymbol referencedSymbol, ReferencedSymbol referencedSymbol,
ArrayBuilder<SourceReferenceItem> references, ArrayBuilder<SourceReferenceItem> references,
DefinitionItem definitionItem, DefinitionItem definitionItem,
bool includeHiddenLocations,
HashSet<DocumentSpan> uniqueSpans) HashSet<DocumentSpan> uniqueSpans)
{ {
foreach (var referenceLocation in referencedSymbol.Locations) foreach (var referenceLocation in referencedSymbol.Locations)
{ {
var sourceReferenceItem = referenceLocation.TryCreateSourceReferenceItem(definitionItem); var sourceReferenceItem = referenceLocation.TryCreateSourceReferenceItem(
definitionItem, includeHiddenLocations);
if (sourceReferenceItem == null) if (sourceReferenceItem == null)
{ {
continue; continue;
...@@ -148,6 +155,7 @@ internal static class DefinitionItemExtensions ...@@ -148,6 +155,7 @@ internal static class DefinitionItemExtensions
public static DefinitionItem ToDefinitionItem( public static DefinitionItem ToDefinitionItem(
this ISymbol definition, this ISymbol definition,
Solution solution, Solution solution,
bool includeHiddenLocations,
HashSet<DocumentSpan> uniqueSpans = null) HashSet<DocumentSpan> uniqueSpans = null)
{ {
var displayParts = definition.ToDisplayParts(GetFormat(definition)).ToTaggedText(); var displayParts = definition.ToDisplayParts(GetFormat(definition)).ToTaggedText();
...@@ -170,8 +178,14 @@ internal static class DefinitionItemExtensions ...@@ -170,8 +178,14 @@ internal static class DefinitionItemExtensions
return DefinitionItem.CreateMetadataDefinition( return DefinitionItem.CreateMetadataDefinition(
tags, displayParts, solution, definition, displayIfNoReferences); tags, displayParts, solution, definition, displayIfNoReferences);
} }
else if (location.IsVisibleSourceLocation()) else if (location.IsInSource)
{ {
if (!location.IsVisibleSourceLocation() &&
!includeHiddenLocations)
{
continue;
}
var document = solution.GetDocument(location.SourceTree); var document = solution.GetDocument(location.SourceTree);
if (document != null) if (document != null)
{ {
...@@ -209,12 +223,14 @@ internal static class DefinitionItemExtensions ...@@ -209,12 +223,14 @@ internal static class DefinitionItemExtensions
public static SourceReferenceItem TryCreateSourceReferenceItem( public static SourceReferenceItem TryCreateSourceReferenceItem(
this ReferenceLocation referenceLocation, this ReferenceLocation referenceLocation,
DefinitionItem definitionItem) DefinitionItem definitionItem,
bool includeHiddenLocations)
{ {
var location = referenceLocation.Location; var location = referenceLocation.Location;
Debug.Assert(location.IsInSource); Debug.Assert(location.IsInSource);
if (!location.IsVisibleSourceLocation()) if (!location.IsVisibleSourceLocation() &&
!includeHiddenLocations)
{ {
return null; return null;
} }
......
...@@ -230,7 +230,8 @@ public override bool TryFindAllReferences(ISymbol symbol, Project project, Cance ...@@ -230,7 +230,8 @@ public override bool TryFindAllReferences(ISymbol symbol, Project project, Cance
Solution solution, IEnumerable<ReferencedSymbol> referencedSymbols) Solution solution, IEnumerable<ReferencedSymbol> referencedSymbols)
{ {
var service = this.Services.GetService<IDefinitionsAndReferencesFactory>(); var service = this.Services.GetService<IDefinitionsAndReferencesFactory>();
var definitionsAndReferences = service.CreateDefinitionsAndReferences(solution, referencedSymbols); var definitionsAndReferences = service.CreateDefinitionsAndReferences(
solution, referencedSymbols, includeHiddenLocations: false);
foreach (var presenter in _referencedSymbolsPresenters) foreach (var presenter in _referencedSymbolsPresenters)
{ {
......
...@@ -150,7 +150,8 @@ using System.Threading; ...@@ -150,7 +150,8 @@ using System.Threading;
Dim libraryManager = New LibraryManager(New MockServiceProvider(New MockComponentModel(workspace.ExportProvider))) Dim libraryManager = New LibraryManager(New MockServiceProvider(New MockComponentModel(workspace.ExportProvider)))
Dim factory = workspace.Services.GetService(Of IDefinitionsAndReferencesFactory) Dim factory = workspace.Services.GetService(Of IDefinitionsAndReferencesFactory)
Dim definitionsAndReferences = factory.CreateDefinitionsAndReferences(workspace.CurrentSolution, result) Dim definitionsAndReferences = factory.CreateDefinitionsAndReferences(
workspace.CurrentSolution, result, includeHiddenLocations:=False)
Dim findReferencesTree = libraryManager.CreateFindReferencesItems(definitionsAndReferences) Dim findReferencesTree = libraryManager.CreateFindReferencesItems(definitionsAndReferences)
' We cannot control the ordering of top-level nodes in the Find Symbol References window, so do not consider ordering of these items here. ' We cannot control the ordering of top-level nodes in the Find Symbol References window, so do not consider ordering of these items here.
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册