Browse Source

IronPython member resolver now finds types that have been imported.

pull/1/head
mrward 15 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 @@ -32,7 +32,7 @@ namespace ICSharpCode.PythonBinding
{
MemberName memberName = new MemberName(expression);
if (memberName.HasName) {
IClass c = resolverContext.GetClass(memberName.Type);
IClass c = FindClass(resolverContext, memberName.Type);
if (c != null) {
return FindMemberInClass(c, memberName.Name);
} else {
@ -42,6 +42,11 @@ namespace ICSharpCode.PythonBinding @@ -42,6 +42,11 @@ namespace ICSharpCode.PythonBinding
return null;
}
IClass FindClass(PythonResolverContext resolverContext, string className)
{
return classResolver.GetClass(resolverContext, className);
}
MemberResolveResult CreateMemberResolveResult(IMember 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 @@ -28,13 +28,17 @@ namespace PythonBinding.Tests.Resolver
void CreateClassWithOneEvent()
{
resolverHelper = new PythonResolverTestsHelper();
// Define imports.
string code =
"from MyNamespace import MyClass";
resolverHelper = new PythonResolverTestsHelper(code);
myClass = resolverHelper.CreateClass("MyClass");
myClassEvent = myClass.AddEvent("MyEvent");
AddEventHandlerClass();
resolverHelper.ProjectContent.SetClassToReturnFromGetClass("MyClass", myClass);
resolverHelper.ProjectContent.SetClassToReturnFromGetClass("MyNamespace.MyClass", myClass);
}
void AddEventHandlerClass()

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

@ -18,16 +18,24 @@ namespace PythonBinding.Tests.Utils @@ -18,16 +18,24 @@ namespace PythonBinding.Tests.Utils
public PythonResolver Resolver;
public ResolveResult ResolveResult;
public PythonResolverTestsHelper()
public PythonResolverTestsHelper(string code)
{
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);
Context = new PythonResolverContext(ParseInfo);
Resolver = new PythonResolver();
}
public PythonResolverTestsHelper()
: this(String.Empty)
{
}
public ResolveResult Resolve(string expression)
{
ExpressionResult expressionResult = new ExpressionResult(expression);

Loading…
Cancel
Save