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 19:30:53 +0400
committerDaniel Grunwald <daniel@danielgrunwald.de>2012-05-18 19:25:58 +0400
commit180ed85c8584a0c63966906b5894395c36035664 (patch)
treef62d36aeda538eca8514641007f020a084d78eb2 /ICSharpCode.NRefactory.ConsistencyCheck
parent4b3bb7e8a767fee292893c024dbcf0d7aaf98ebc (diff)
Implemented IUnresolvedMember.Resolve().
Diffstat (limited to 'ICSharpCode.NRefactory.ConsistencyCheck')
-rw-r--r--ICSharpCode.NRefactory.ConsistencyCheck/ICSharpCode.NRefactory.ConsistencyCheck.csproj2
-rw-r--r--ICSharpCode.NRefactory.ConsistencyCheck/Program.cs3
-rw-r--r--ICSharpCode.NRefactory.ConsistencyCheck/TypeSystemTests.cs (renamed from ICSharpCode.NRefactory.ConsistencyCheck/IDStringConsistencyCheck.cs)29
3 files changed, 30 insertions, 4 deletions
diff --git a/ICSharpCode.NRefactory.ConsistencyCheck/ICSharpCode.NRefactory.ConsistencyCheck.csproj b/ICSharpCode.NRefactory.ConsistencyCheck/ICSharpCode.NRefactory.ConsistencyCheck.csproj
index 58c0780a..0abf5100 100644
--- a/ICSharpCode.NRefactory.ConsistencyCheck/ICSharpCode.NRefactory.ConsistencyCheck.csproj
+++ b/ICSharpCode.NRefactory.ConsistencyCheck/ICSharpCode.NRefactory.ConsistencyCheck.csproj
@@ -59,7 +59,7 @@
</Compile>
<Compile Include="CSharpProject.cs" />
<Compile Include="FindReferencesConsistencyCheck.cs" />
- <Compile Include="IDStringConsistencyCheck.cs" />
+ <Compile Include="TypeSystemTests.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="RandomizedOrderResolverTest.cs" />
diff --git a/ICSharpCode.NRefactory.ConsistencyCheck/Program.cs b/ICSharpCode.NRefactory.ConsistencyCheck/Program.cs
index b93c60f9..b562f03a 100644
--- a/ICSharpCode.NRefactory.ConsistencyCheck/Program.cs
+++ b/ICSharpCode.NRefactory.ConsistencyCheck/Program.cs
@@ -57,7 +57,8 @@ namespace ICSharpCode.NRefactory.ConsistencyCheck
solution.AllFiles.Count(),
solution.Projects.Count);
- //using (new Timer("ID String test... ")) IDStringConsistencyCheck.Run(solution);
+ //using (new Timer("ID String test... ")) TypeSystemTests.IDStringConsistencyCheck(solution);
+ using (new Timer("Resolve unresolved members... ")) TypeSystemTests.ResolvedUnresolvedMembers(solution);
//RunTestOnAllFiles("Roundtripping test", RoundtripTest.RunTest);
RunTestOnAllFiles("Resolver test", ResolverTest.RunTest);
RunTestOnAllFiles("Resolver test (no parsed file)", ResolverTest.RunTestWithoutParsedFile);
diff --git a/ICSharpCode.NRefactory.ConsistencyCheck/IDStringConsistencyCheck.cs b/ICSharpCode.NRefactory.ConsistencyCheck/TypeSystemTests.cs
index cb6de558..5c8b6a3a 100644
--- a/ICSharpCode.NRefactory.ConsistencyCheck/IDStringConsistencyCheck.cs
+++ b/ICSharpCode.NRefactory.ConsistencyCheck/TypeSystemTests.cs
@@ -25,9 +25,9 @@ using ICSharpCode.NRefactory.TypeSystem.Implementation;
namespace ICSharpCode.NRefactory.ConsistencyCheck
{
- public class IDStringConsistencyCheck
+ public class TypeSystemTests
{
- public static void Run(Solution solution)
+ public static void IDStringConsistencyCheck(Solution solution)
{
foreach (var project in solution.Projects) {
var compilation = project.Compilation;
@@ -51,5 +51,30 @@ namespace ICSharpCode.NRefactory.ConsistencyCheck
if (resolvedEntity != entity)
throw new InvalidOperationException(id);
}
+
+ public static void ResolvedUnresolvedMembers(Solution solution)
+ {
+ foreach (var project in solution.Projects) {
+ var compilation = project.Compilation;
+ var context = new SimpleTypeResolveContext(compilation.MainAssembly);
+ foreach (var typeDef in compilation.MainAssembly.GetAllTypeDefinitions()) {
+ foreach (var part in typeDef.Parts) {
+ if (!typeDef.Equals(part.Resolve(context)))
+ throw new InvalidOperationException();
+ }
+ foreach (var member in typeDef.Members) {
+ var resolvedMember = member.UnresolvedMember.Resolve(context);
+ if (!member.Equals(resolvedMember))
+ throw new InvalidOperationException();
+ }
+ // Include (potentially specialized) inherited members when testing ToMemberReference()
+ foreach (var member in typeDef.GetMembers()) {
+ var resolvedMember = member.ToMemberReference().Resolve(context);
+ if (!member.Equals(resolvedMember))
+ throw new InvalidOperationException();
+ }
+ }
+ }
+ }
}
}