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

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
authorMike Krüger <mkrueger@xamarin.com>2013-08-08 13:19:34 +0400
committerMike Krüger <mkrueger@xamarin.com>2013-08-08 13:19:34 +0400
commita2bc64a378cf7800cf00da91a905553abac75700 (patch)
tree840c0c754cb92d6d1fe222637e224577a52d5af1 /main
parent89f960848e3e366c83edd782f6e13a2a1a83e921 (diff)
[Refactoring] Goto base now works for all members and not just for
methods.
Diffstat (limited to 'main')
-rw-r--r--main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/RefactoryCommands.cs38
1 files changed, 15 insertions, 23 deletions
diff --git a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/RefactoryCommands.cs b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/RefactoryCommands.cs
index 1767bf1b5a..8ac7f01f4f 100644
--- a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/RefactoryCommands.cs
+++ b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/RefactoryCommands.cs
@@ -152,22 +152,11 @@ namespace MonoDevelop.Refactoring
}
}
- var method = item as IMethod;
+ var method = item as IMember;
if (method != null) {
- foreach (var def in method.DeclaringTypeDefinition.DirectBaseTypes) {
- if (def != null && def.Kind != TypeKind.Interface && !def.GetDefinition ().Region.IsEmpty) {
- IMethod baseMethod = null;
- foreach (var m in def.GetMethods ()) {
- if (m.Name == method.Name && ParameterListComparer.Instance.Equals (m.Parameters, method.Parameters)) {
- baseMethod = m;
- break;
- }
- }
- if (baseMethod != null)
- IdeApp.Workbench.OpenDocument (baseMethod.Region.FileName, baseMethod.Region.BeginLine, baseMethod.Region.EndLine);
- return;
- }
- }
+ var baseMethod = InheritanceHelper.GetBaseMember (method);
+ if (baseMethod != null)
+ IdeApp.Workbench.OpenDocument (baseMethod.Region.FileName, baseMethod.Region.BeginLine, baseMethod.Region.EndLine);
return;
}
}
@@ -327,20 +316,23 @@ namespace MonoDevelop.Refactoring
added = true;
}
+ if (item is IMember) {
+ var member = (IMember)item;
+ if (member.IsOverride || member.ImplementedInterfaceMembers.Any ()) {
+ ainfo.Add (GettextCatalog.GetString ("Go to _base symbol"), new System.Action (new GotoBase (member).Run));
+ added = true;
+ }
+ }
+
if (item is IEntity || item is ITypeParameter || item is IVariable || item is INamespace) {
ainfo.Add (IdeApp.CommandService.GetCommandInfo (RefactoryCommands.FindReferences), new System.Action (new FindRefs (item, false).Run));
if (doc.HasProject && HasOverloads (doc.Project.ParentSolution, item))
ainfo.Add (IdeApp.CommandService.GetCommandInfo (RefactoryCommands.FindAllReferences), new System.Action (new FindRefs (item, true).Run));
added = true;
}
-
- if (item is IMethod) {
- IMethod method = item as IMethod;
- if (method.IsOverride) {
- ainfo.Add (GettextCatalog.GetString ("Go to _base"), new System.Action (new GotoBase ((IMethod)item).Run));
- added = true;
- }
- } else if (item is ITypeDefinition) {
+
+
+ if (item is ITypeDefinition) {
ITypeDefinition cls = (ITypeDefinition)item;
foreach (var bc in cls.DirectBaseTypes) {
if (bc != null && bc.GetDefinition () != null && bc.GetDefinition ().Kind != TypeKind.Interface/* TODO: && IdeApp.ProjectOperations.CanJumpToDeclaration (bc)*/) {