Browse Source

Fix goto definition for MSpec fields in Unit Tests window.

pull/32/merge
Matt Ward 13 years ago
parent
commit
44143f236c
  1. 26
      src/AddIns/Analysis/MachineSpecifications/MachineSpecifications/src/MSpecTestMember.cs
  2. 2
      src/AddIns/Analysis/MachineSpecifications/MachineSpecifications/src/MSpecTestProject.cs

26
src/AddIns/Analysis/MachineSpecifications/MachineSpecifications/src/MSpecTestMember.cs

@ -2,7 +2,10 @@ @@ -2,7 +2,10 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Windows.Input;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Widgets;
using ICSharpCode.UnitTesting;
namespace ICSharpCode.MachineSpecifications
@ -11,8 +14,9 @@ namespace ICSharpCode.MachineSpecifications @@ -11,8 +14,9 @@ namespace ICSharpCode.MachineSpecifications
{
MSpecTestProject parentProject;
string displayName;
IMember member;
public MSpecTestMember(MSpecTestProject parentProject, string displayName)
MSpecTestMember(MSpecTestProject parentProject, string displayName)
{
this.parentProject = parentProject;
this.displayName = displayName;
@ -21,8 +25,9 @@ namespace ICSharpCode.MachineSpecifications @@ -21,8 +25,9 @@ namespace ICSharpCode.MachineSpecifications
public MSpecTestMember(
MSpecTestProject parentProject,
IMember member)
: this(parentProject, member.DeclaringType.Name + "." + member.Name)
: this(parentProject, member.Name)
{
this.member = member;
}
public override ITestProject ParentProject {
@ -37,5 +42,22 @@ namespace ICSharpCode.MachineSpecifications @@ -37,5 +42,22 @@ namespace ICSharpCode.MachineSpecifications
{
this.Result = result.ResultType;
}
public IMember Resolve()
{
ICompilation compilation = SD.ParserService.GetCompilation(parentProject.Project);
return member.UnresolvedMember.Resolve(new SimpleTypeResolveContext(compilation.MainAssembly));
}
public override ICommand GoToDefinition {
get {
return new RelayCommand(
delegate {
IMember member = Resolve();
if (member != null)
NavigationService.NavigateTo(member);
});
}
}
}
}

2
src/AddIns/Analysis/MachineSpecifications/MachineSpecifications/src/MSpecTestProject.cs

@ -90,7 +90,7 @@ namespace ICSharpCode.MachineSpecifications @@ -90,7 +90,7 @@ namespace ICSharpCode.MachineSpecifications
IEnumerable<ITest> GetTestMembers(ITypeDefinition testClass, IEnumerable<IField> fields)
{
List<MSpecTestMember> result = fields.Where(HasItReturnType).Select(field => new MSpecTestMember(this, field.Name)).ToList();
List<MSpecTestMember> result = fields.Where(HasItReturnType).Select(field => new MSpecTestMember(this, field)).ToList();
foreach (IField field in fields) {
if (HasBehavesLikeReturnType(field)) {
IEnumerable<IField> behaviorFields = ResolveBehaviorFieldsOf(field);

Loading…
Cancel
Save