Browse Source

Fix resolved local variable type being saved between calls causing code completion window to show when it should not.

pull/2/head
mrward 15 years ago
parent
commit
b264284610
  1. 10
      src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonLocalVariableResolver.cs
  2. 21
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Resolver/PythonLocalVariableResolverTests.cs
  3. 1
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Resolver/ResolveLocalVariableMethodTests.cs

10
src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonLocalVariableResolver.cs

@ -33,13 +33,6 @@ namespace ICSharpCode.PythonBinding @@ -33,13 +33,6 @@ namespace ICSharpCode.PythonBinding
this.classResolver = classResolver;
}
/// <summary>
/// The resolved type name.
/// </summary>
public string TypeName {
get { return typeName; }
}
/// <summary>
/// Resolves the type of the variable name specified.
/// </summary>
@ -57,9 +50,10 @@ namespace ICSharpCode.PythonBinding @@ -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)

21
src/AddIns/BackendBindings/Python/PythonBinding/Test/Resolver/PythonLocalVariableResolverTests.cs

@ -14,10 +14,15 @@ namespace PythonBinding.Tests.Resolver @@ -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 @@ -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);
}
}
}

1
src/AddIns/BackendBindings/Python/PythonBinding/Test/Resolver/ResolveLocalVariableMethodTests.cs

@ -52,6 +52,5 @@ namespace PythonBinding.Tests.Resolver @@ -52,6 +52,5 @@ namespace PythonBinding.Tests.Resolver
Assert.AreEqual(myClass, c);
}
}
}

Loading…
Cancel
Save