diff options
author | Daniel Grunwald <daniel@danielgrunwald.de> | 2012-05-18 20:23:19 +0400 |
---|---|---|
committer | Daniel Grunwald <daniel@danielgrunwald.de> | 2012-05-18 20:23:33 +0400 |
commit | cbb1fe5008dfcd7144c29d65ff4f6bbfbb65d660 (patch) | |
tree | b7b74c091968c647fb4565b5274bb4a0bfafe1e3 /ICSharpCode.NRefactory.ConsistencyCheck | |
parent | c93aca4b914b8f2cb3e6f0daf22daf32085f5d39 (diff) |
Fixed some issues resolving members.
Diffstat (limited to 'ICSharpCode.NRefactory.ConsistencyCheck')
-rw-r--r-- | ICSharpCode.NRefactory.ConsistencyCheck/TypeSystemTests.cs | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/ICSharpCode.NRefactory.ConsistencyCheck/TypeSystemTests.cs b/ICSharpCode.NRefactory.ConsistencyCheck/TypeSystemTests.cs index 5c8b6a3a..381a4c7a 100644 --- a/ICSharpCode.NRefactory.ConsistencyCheck/TypeSystemTests.cs +++ b/ICSharpCode.NRefactory.ConsistencyCheck/TypeSystemTests.cs @@ -56,17 +56,24 @@ namespace ICSharpCode.NRefactory.ConsistencyCheck { foreach (var project in solution.Projects) { var compilation = project.Compilation; - var context = new SimpleTypeResolveContext(compilation.MainAssembly); + var assemblyContext = new SimpleTypeResolveContext(compilation.MainAssembly); foreach (var typeDef in compilation.MainAssembly.GetAllTypeDefinitions()) { foreach (var part in typeDef.Parts) { - if (!typeDef.Equals(part.Resolve(context))) + if (!typeDef.Equals(part.Resolve(assemblyContext))) throw new InvalidOperationException(); } foreach (var member in typeDef.Members) { - var resolvedMember = member.UnresolvedMember.Resolve(context); + var resolvedMember = member.UnresolvedMember.Resolve(assemblyContext); if (!member.Equals(resolvedMember)) throw new InvalidOperationException(); } + // ToMemberReference() requires an appropriate generic context if the member + // contains open generics; otherwise the main context of the compilation is sufficient. + ITypeResolveContext context; + if (typeDef.TypeParameterCount > 0) + context = new SimpleTypeResolveContext(typeDef); + else + context = compilation.TypeResolveContext; // Include (potentially specialized) inherited members when testing ToMemberReference() foreach (var member in typeDef.GetMembers()) { var resolvedMember = member.ToMemberReference().Resolve(context); |