Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/xamarin/NRefactory.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Grunwald <daniel@danielgrunwald.de>2014-08-29 01:22:33 +0400
committerDaniel Grunwald <daniel@danielgrunwald.de>2014-08-29 01:22:45 +0400
commit9429712ebd1eaaa0c4ffbbf1458c2cceea04b6db (patch)
treeb8144f788121337bfdee055f6d43267c800458a0 /ICSharpCode.NRefactory
parentff0393ce92e1adf0365a357cbf9eb9c9a20bf845 (diff)
Merge changes from SharpDevelop to NRefactory
Diffstat (limited to 'ICSharpCode.NRefactory')
-rw-r--r--ICSharpCode.NRefactory/Analysis/SymbolCollector.cs25
1 files changed, 15 insertions, 10 deletions
diff --git a/ICSharpCode.NRefactory/Analysis/SymbolCollector.cs b/ICSharpCode.NRefactory/Analysis/SymbolCollector.cs
index 7a8959e8..6fa91282 100644
--- a/ICSharpCode.NRefactory/Analysis/SymbolCollector.cs
+++ b/ICSharpCode.NRefactory/Analysis/SymbolCollector.cs
@@ -52,7 +52,7 @@ namespace ICSharpCode.NRefactory.Analysis
}
}
- static IEnumerable<ISymbol> CollectOverloads (TypeGraph g, IMethod method)
+ static IEnumerable<ISymbol> CollectOverloads (IMethod method)
{
return method.DeclaringType
.GetMethods (m => m.Name == method.Name)
@@ -85,7 +85,7 @@ namespace ICSharpCode.NRefactory.Analysis
/// <returns>The related symbols.</returns>
/// <param name="g">The type graph.</param>
/// <param name="m">The symbol to search</param>
- public IEnumerable<ISymbol> GetRelatedSymbols(TypeGraph g, ISymbol m)
+ public IEnumerable<ISymbol> GetRelatedSymbols(Lazy<TypeGraph> g, ISymbol m)
{
switch (m.SymbolKind) {
case SymbolKind.TypeDefinition:
@@ -103,7 +103,7 @@ namespace ICSharpCode.NRefactory.Analysis
return GetRelatedSymbols (g, ((IMethod)m).DeclaringTypeDefinition);
List<ISymbol> constructorSymbols = new List<ISymbol> ();
if (IncludeOverloads) {
- foreach (var m3 in CollectOverloads (g, (IMethod)m)) {
+ foreach (var m3 in CollectOverloads ((IMethod)m)) {
constructorSymbols.Add (m3);
}
}
@@ -120,19 +120,24 @@ namespace ICSharpCode.NRefactory.Analysis
case SymbolKind.Method: {
var member = (IMember)m;
List<ISymbol> symbols = new List<ISymbol> ();
- if (member.ImplementedInterfaceMembers.Count > 0) {
+ if (!member.IsExplicitInterfaceImplementation)
+ symbols.Add (member);
+ if (GroupForRenaming) {
foreach (var m2 in member.ImplementedInterfaceMembers) {
symbols.AddRange (GetRelatedSymbols (g, m2));
}
} else {
- symbols.Add (member);
+ symbols.AddRange(member.ImplementedInterfaceMembers);
}
if (member.DeclaringType.Kind == TypeKind.Interface) {
- foreach (var derivedType in g.GetNode (member.DeclaringTypeDefinition).DerivedTypes) {
- var mem = SearchMember (derivedType.TypeDefinition, member);
- if (mem != null)
- symbols.Add (mem);
+ var declaringTypeNode = g.Value.GetNode(member.DeclaringTypeDefinition);
+ if (declaringTypeNode != null) {
+ foreach (var derivedType in declaringTypeNode.DerivedTypes) {
+ var mem = SearchMember (derivedType.TypeDefinition, member);
+ if (mem != null)
+ symbols.Add (mem);
+ }
}
}
@@ -140,7 +145,7 @@ namespace ICSharpCode.NRefactory.Analysis
if (IncludeOverloads) {
IncludeOverloads = false;
if (member is IMethod) {
- foreach (var m3 in CollectOverloads (g, (IMethod)member)) {
+ foreach (var m3 in CollectOverloads ((IMethod)member)) {
symbols.AddRange (GetRelatedSymbols (g, m3));
}
} else if (member.SymbolKind == SymbolKind.Indexer) {