Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/xamarin/NRefactory.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Grunwald <daniel@danielgrunwald.de>2012-05-18 20:23:19 +0400
committerDaniel Grunwald <daniel@danielgrunwald.de>2012-05-18 20:23:33 +0400
commitcbb1fe5008dfcd7144c29d65ff4f6bbfbb65d660 (patch)
treeb7b74c091968c647fb4565b5274bb4a0bfafe1e3 /ICSharpCode.NRefactory.ConsistencyCheck
parentc93aca4b914b8f2cb3e6f0daf22daf32085f5d39 (diff)
Fixed some issues resolving members.
Diffstat (limited to 'ICSharpCode.NRefactory.ConsistencyCheck')
-rw-r--r--ICSharpCode.NRefactory.ConsistencyCheck/TypeSystemTests.cs13
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);