Browse Source

Fixed code-completion problem introduced in last revision.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2175 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 19 years ago
parent
commit
259a31692e
  1. 36
      src/Libraries/NRefactory/Project/Src/Visitors/LookupTableVisitor.cs
  2. 42
      src/Main/Base/Test/NRefactoryResolverTests.cs

36
src/Libraries/NRefactory/Project/Src/Visitors/LookupTableVisitor.cs

@ -135,28 +135,40 @@ namespace ICSharpCode.NRefactory.Visitors @@ -135,28 +135,40 @@ namespace ICSharpCode.NRefactory.Visitors
public override object VisitForNextStatement(ForNextStatement forNextStatement, object data)
{
// uses LocalVariableDeclaration, we just have to put the end location on the stack
endLocationStack.Push(forNextStatement.EmbeddedStatement.EndLocation);
base.VisitForNextStatement(forNextStatement, data);
endLocationStack.Pop();
return null;
if (forNextStatement.EmbeddedStatement.EndLocation.IsEmpty) {
return base.VisitForNextStatement(forNextStatement, data);
} else {
endLocationStack.Push(forNextStatement.EmbeddedStatement.EndLocation);
base.VisitForNextStatement(forNextStatement, data);
endLocationStack.Pop();
return null;
}
}
public override object VisitForStatement(ForStatement forStatement, object data)
{
// uses LocalVariableDeclaration, we just have to put the end location on the stack
endLocationStack.Push(forStatement.EmbeddedStatement.EndLocation);
base.VisitForStatement(forStatement, data);
endLocationStack.Pop();
return null;
if (forStatement.EmbeddedStatement.EndLocation.IsEmpty) {
return base.VisitForStatement(forStatement, data);
} else {
endLocationStack.Push(forStatement.EmbeddedStatement.EndLocation);
base.VisitForStatement(forStatement, data);
endLocationStack.Pop();
return null;
}
}
public override object VisitUsingStatement(UsingStatement usingStatement, object data)
{
// uses LocalVariableDeclaration, we just have to put the end location on the stack
endLocationStack.Push(usingStatement.EmbeddedStatement.EndLocation);
base.VisitUsingStatement(usingStatement, data);
endLocationStack.Pop();
return null;
if (usingStatement.EmbeddedStatement.EndLocation.IsEmpty) {
return base.VisitUsingStatement(usingStatement, data);
} else {
endLocationStack.Push(usingStatement.EmbeddedStatement.EndLocation);
base.VisitUsingStatement(usingStatement, data);
endLocationStack.Pop();
return null;
}
}
public override object VisitForeachStatement(ForeachStatement foreachStatement, object data)

42
src/Main/Base/Test/NRefactoryResolverTests.cs

@ -594,6 +594,27 @@ class A { @@ -594,6 +594,27 @@ class A {
ResolveResult result = Resolve<TypeResolveResult>(program, "Environment.SpecialFolder", 3);
Assert.AreEqual("System.Environment.SpecialFolder", result.ResolvedType.FullyQualifiedName);
}
[Test]
public void LoopVariableScopeTest()
{
string program = @"using System;
class TestClass {
void Test() {
for (int i = 0; i < 10; i++) {
}
for (long i = 0; i < 10; i++) {
}
}
}
";
LocalResolveResult lr = Resolve<LocalResolveResult>(program, "i", 5);
Assert.AreEqual("System.Int32", lr.ResolvedType.FullyQualifiedName);
lr = Resolve<LocalResolveResult>(program, "i", 8);
Assert.AreEqual("System.Int64", lr.ResolvedType.FullyQualifiedName);
}
#endregion
#region Import namespace tests
@ -772,27 +793,6 @@ namespace A.B { @@ -772,27 +793,6 @@ namespace A.B {
TypeResolveResult trr = Resolve<TypeResolveResult>(program, "C.D", 7);
Assert.AreEqual("A.B.C.D", trr.ResolvedClass.FullyQualifiedName, "trr.ResolvedClass.FullyQualifiedName");
}
[Test]
public void LoopVariableScopeTest()
{
string program = @"using System;
class TestClass {
void Test() {
for (int i = 0; i < 10; i++) {
}
for (long i = 0; i < 10; i++) {
}
}
}
";
LocalResolveResult lr = Resolve<LocalResolveResult>(program, "i", 5);
Assert.AreEqual("System.Int32", lr.ResolvedType.FullyQualifiedName);
lr = Resolve<LocalResolveResult>(program, "i", 8);
Assert.AreEqual("System.Int64", lr.ResolvedType.FullyQualifiedName);
}
#endregion
#region Import class tests

Loading…
Cancel
Save