Browse Source

Merge pull request #93 from erik-kallen/DuplicateUsingsIssue

Duplicate usings issue
newNRvisualizers
Daniel Grunwald 14 years ago
parent
commit
eb4de73fc3
  1. 2
      ICSharpCode.NRefactory.CSharp/TypeSystem/ResolvedUsingScope.cs
  2. 26
      ICSharpCode.NRefactory.Tests/CSharp/Resolver/NameLookupTests.cs

2
ICSharpCode.NRefactory.CSharp/TypeSystem/ResolvedUsingScope.cs

@ -97,7 +97,7 @@ namespace ICSharpCode.NRefactory.CSharp.TypeSystem @@ -97,7 +97,7 @@ namespace ICSharpCode.NRefactory.CSharp.TypeSystem
CSharpResolver resolver = new CSharpResolver(parentContext.WithUsingScope(this));
foreach (var u in usingScope.Usings) {
INamespace ns = u.ResolveNamespace(resolver);
if (ns != null)
if (ns != null && !result.Contains(ns))
result.Add(ns);
}
return LazyInit.GetOrSet(ref this.usings, new ReadOnlyCollection<INamespace>(result));

26
ICSharpCode.NRefactory.Tests/CSharp/Resolver/NameLookupTests.cs

@ -989,5 +989,31 @@ class MainClass : Test @@ -989,5 +989,31 @@ class MainClass : Test
Assert.AreEqual("System.String", result.Type.FullName);
}
[Test]
public void DuplicateUsingDirective() {
string program = @"
using foo;
using foo;
namespace bar {
using foo;
using foo;
public class Bar {
public void M() {
new $Foo$();
}
}
}
namespace foo {
public class Foo {
}
}";
var result = Resolve<TypeResolveResult>(program);
Assert.IsFalse(result.IsError);
Assert.AreEqual("foo.Foo", result.Type.FullName);
}
}
}

Loading…
Cancel
Save