diff --git a/src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonLocalVariableResolver.cs b/src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonLocalVariableResolver.cs
index 01ae483503..2ac17feff9 100644
--- a/src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonLocalVariableResolver.cs
+++ b/src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonLocalVariableResolver.cs
@@ -33,13 +33,6 @@ namespace ICSharpCode.PythonBinding
this.classResolver = classResolver;
}
- ///
- /// The resolved type name.
- ///
- public string TypeName {
- get { return typeName; }
- }
-
///
/// Resolves the type of the variable name specified.
///
@@ -57,9 +50,10 @@ namespace ICSharpCode.PythonBinding
string Resolve(string variableName, PythonAst ast)
{
+ typeName = null;
this.variableName = variableName;
ast.Walk(this);
- return TypeName;
+ return typeName;
}
public override bool Walk(AssignmentStatement node)
diff --git a/src/AddIns/BackendBindings/Python/PythonBinding/Test/Resolver/PythonLocalVariableResolverTests.cs b/src/AddIns/BackendBindings/Python/PythonBinding/Test/Resolver/PythonLocalVariableResolverTests.cs
index 5a2db77695..cdc2086d7e 100644
--- a/src/AddIns/BackendBindings/Python/PythonBinding/Test/Resolver/PythonLocalVariableResolverTests.cs
+++ b/src/AddIns/BackendBindings/Python/PythonBinding/Test/Resolver/PythonLocalVariableResolverTests.cs
@@ -14,10 +14,15 @@ namespace PythonBinding.Tests.Resolver
{
string typeName;
- void Resolve(string variableName, string code)
+ PythonLocalVariableResolver CreateResolver()
{
PythonClassResolver classResolver = new PythonClassResolver();
- PythonLocalVariableResolver resolver = new PythonLocalVariableResolver(classResolver);
+ return new PythonLocalVariableResolver(classResolver);
+ }
+
+ void Resolve(string variableName, string code)
+ {
+ PythonLocalVariableResolver resolver = CreateResolver();
typeName = resolver.Resolve(variableName, code);
}
@@ -98,5 +103,17 @@ namespace PythonBinding.Tests.Resolver
Assert.AreEqual("OracleClient.OracleConnection", typeName);
}
+
+ [Test]
+ public void Resolve_CalledTwiceFirstCallResolvesTypeNameSecondCallDoesNotResolve_ReturnsNull()
+ {
+ string code = "a = Class1()";
+
+ PythonLocalVariableResolver resolver = CreateResolver();
+ resolver.Resolve("a", code);
+ string typeName = resolver.Resolve("b", code);
+
+ Assert.IsNull(typeName);
+ }
}
}
diff --git a/src/AddIns/BackendBindings/Python/PythonBinding/Test/Resolver/ResolveLocalVariableMethodTests.cs b/src/AddIns/BackendBindings/Python/PythonBinding/Test/Resolver/ResolveLocalVariableMethodTests.cs
index 6d30d2aeb1..03a7c78018 100644
--- a/src/AddIns/BackendBindings/Python/PythonBinding/Test/Resolver/ResolveLocalVariableMethodTests.cs
+++ b/src/AddIns/BackendBindings/Python/PythonBinding/Test/Resolver/ResolveLocalVariableMethodTests.cs
@@ -52,6 +52,5 @@ namespace PythonBinding.Tests.Resolver
Assert.AreEqual(myClass, c);
}
-
}
}