Browse Source

IronPython member resolver now finds types that have been imported.

pull/1/head
mrward 16 years ago
parent
commit
b7ec252184
  1. 7
      src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonMemberResolver.cs
  2. 8
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Resolver/ResolveClassEventTests.cs
  3. 12
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Utils/PythonResolverTestsHelper.cs

7
src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonMemberResolver.cs

@ -32,7 +32,7 @@ namespace ICSharpCode.PythonBinding
{ {
MemberName memberName = new MemberName(expression); MemberName memberName = new MemberName(expression);
if (memberName.HasName) { if (memberName.HasName) {
IClass c = resolverContext.GetClass(memberName.Type); IClass c = FindClass(resolverContext, memberName.Type);
if (c != null) { if (c != null) {
return FindMemberInClass(c, memberName.Name); return FindMemberInClass(c, memberName.Name);
} else { } else {
@ -42,6 +42,11 @@ namespace ICSharpCode.PythonBinding
return null; return null;
} }
IClass FindClass(PythonResolverContext resolverContext, string className)
{
return classResolver.GetClass(resolverContext, className);
}
MemberResolveResult CreateMemberResolveResult(IMember member) MemberResolveResult CreateMemberResolveResult(IMember member)
{ {
return new MemberResolveResult(null, null, member); return new MemberResolveResult(null, null, member);

8
src/AddIns/BackendBindings/Python/PythonBinding/Test/Resolver/ResolveClassEventTests.cs

@ -28,13 +28,17 @@ namespace PythonBinding.Tests.Resolver
void CreateClassWithOneEvent() void CreateClassWithOneEvent()
{ {
resolverHelper = new PythonResolverTestsHelper(); // Define imports.
string code =
"from MyNamespace import MyClass";
resolverHelper = new PythonResolverTestsHelper(code);
myClass = resolverHelper.CreateClass("MyClass"); myClass = resolverHelper.CreateClass("MyClass");
myClassEvent = myClass.AddEvent("MyEvent"); myClassEvent = myClass.AddEvent("MyEvent");
AddEventHandlerClass(); AddEventHandlerClass();
resolverHelper.ProjectContent.SetClassToReturnFromGetClass("MyClass", myClass); resolverHelper.ProjectContent.SetClassToReturnFromGetClass("MyNamespace.MyClass", myClass);
} }
void AddEventHandlerClass() void AddEventHandlerClass()

12
src/AddIns/BackendBindings/Python/PythonBinding/Test/Utils/PythonResolverTestsHelper.cs

@ -18,16 +18,24 @@ namespace PythonBinding.Tests.Utils
public PythonResolver Resolver; public PythonResolver Resolver;
public ResolveResult ResolveResult; public ResolveResult ResolveResult;
public PythonResolverTestsHelper() public PythonResolverTestsHelper(string code)
{ {
ProjectContent = new ScriptingUtils.MockProjectContent(); ProjectContent = new ScriptingUtils.MockProjectContent();
CompilationUnit = new DefaultCompilationUnit(ProjectContent); PythonParser parser = new PythonParser();
string fileName = @"test.py";
CompilationUnit = parser.Parse(ProjectContent, fileName, code) as DefaultCompilationUnit;
ParseInfo = new ParseInformation(CompilationUnit); ParseInfo = new ParseInformation(CompilationUnit);
Context = new PythonResolverContext(ParseInfo); Context = new PythonResolverContext(ParseInfo);
Resolver = new PythonResolver(); Resolver = new PythonResolver();
} }
public PythonResolverTestsHelper()
: this(String.Empty)
{
}
public ResolveResult Resolve(string expression) public ResolveResult Resolve(string expression)
{ {
ExpressionResult expressionResult = new ExpressionResult(expression); ExpressionResult expressionResult = new ExpressionResult(expression);

Loading…
Cancel
Save