diff --git a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/MemberLookupTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/MemberLookupTests.cs index 83b196f067..dc3159fae9 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/MemberLookupTests.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/MemberLookupTests.cs @@ -44,6 +44,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver CSharpUnresolvedFile unresolvedFile = syntaxTree.ToTypeSystem(); project = project.AddOrUpdateFiles(unresolvedFile); compilation = project.CreateCompilation(); + lookup = new MemberLookup(null, compilation.MainAssembly); return unresolvedFile; } @@ -61,7 +62,7 @@ class Derived : Middle { public override void Method() {} }"; var unresolvedFile = Parse(program); - ITypeDefinition derived = compilation.MainAssembly.GetTypeDefinition(unresolvedFile.TopLevelTypeDefinitions[2].FullTypeName); + ITypeDefinition derived = compilation.MainAssembly.GetTypeDefinition(new TopLevelTypeName("Derived")); var rr = lookup.Lookup(new ResolveResult(derived), "Method", EmptyList.Instance, true) as MethodGroupResolveResult; Assert.AreEqual(2, rr.MethodsGroupedByDeclaringType.Count()); @@ -88,7 +89,7 @@ class Derived : Base { public override void Method(string a) {} }"; var unresolvedFile = Parse(program); - ITypeDefinition derived = compilation.MainAssembly.GetTypeDefinition(unresolvedFile.TopLevelTypeDefinitions[1].FullTypeName); + ITypeDefinition derived = compilation.MainAssembly.GetTypeDefinition(new TopLevelTypeName("Derived")); var rr = lookup.Lookup(new ResolveResult(derived), "Method", EmptyList.Instance, true) as MethodGroupResolveResult; Assert.AreEqual(2, rr.MethodsGroupedByDeclaringType.Count()); @@ -116,7 +117,7 @@ class Derived : Base { public override void Method(S a) {} }"; var unresolvedFile = Parse(program); - ITypeDefinition derived = compilation.MainAssembly.GetTypeDefinition(unresolvedFile.TopLevelTypeDefinitions[1].FullTypeName); + ITypeDefinition derived = compilation.MainAssembly.GetTypeDefinition(new TopLevelTypeName("Derived")); var rr = lookup.Lookup(new ResolveResult(derived), "Method", EmptyList.Instance, true) as MethodGroupResolveResult; Assert.AreEqual(1, rr.MethodsGroupedByDeclaringType.Count()); @@ -456,5 +457,37 @@ class TestClass { var mrr = Resolve(program); Assert.AreEqual("TestClass.B", mrr.Member.FullName); } + + [Test] + public void GenericClassDoesNotHideField() + { + string program = @"using System; +class A { public int F; } +class B : A { public class F {} } +class C : B { + public void M() + { + $F$ = 1; + } +}"; + var mrr = Resolve(program); + Assert.AreEqual("A.F", mrr.Member.FullName); + } + + [Test] + public void NonGenericClassHidesField_WithExplicitThisAccess() + { + string program = @"using System; +class A { public int F; } +class B : A { public class F {} } +class C : B { + public void M() + { + $this.F$ = 1; + } +}"; + var trr = Resolve(program); + Assert.AreEqual("B+F", trr.Type.ReflectionName); + } } }