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); } - } }