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-03-15 19:58:00 +0400
committerDaniel Grunwald <daniel@danielgrunwald.de>2012-03-15 19:58:00 +0400
commite80f14238191aaace87932760d3640f22ace42d5 (patch)
treee8d12c25aa1c767ea31f5d5282fe83b978ff18c8 /ICSharpCode.NRefactory.ConsistencyCheck
parentf74bf908bc7e3cdbd85315f118836688135eb344 (diff)
Fixed bug in CSharpAstResolver.GetExpectedType().
Diffstat (limited to 'ICSharpCode.NRefactory.ConsistencyCheck')
-rw-r--r--ICSharpCode.NRefactory.ConsistencyCheck/RandomizedOrderResolverTest.cs32
1 files changed, 30 insertions, 2 deletions
diff --git a/ICSharpCode.NRefactory.ConsistencyCheck/RandomizedOrderResolverTest.cs b/ICSharpCode.NRefactory.ConsistencyCheck/RandomizedOrderResolverTest.cs
index 28972e4a..4c1ad1f7 100644
--- a/ICSharpCode.NRefactory.ConsistencyCheck/RandomizedOrderResolverTest.cs
+++ b/ICSharpCode.NRefactory.ConsistencyCheck/RandomizedOrderResolverTest.cs
@@ -54,6 +54,8 @@ namespace ICSharpCode.NRefactory.ConsistencyCheck
bool checkResults = rnd.Next(0, 2) == 0;
bool checkStateBefore = rnd.Next(0, 2) == 0;
bool checkStateAfter = rnd.Next(0, 2) == 0;
+ bool checkConversion = rnd.Next(0, 2) == 0;
+ bool checkExpectedType = rnd.Next(0, 2) == 0;
foreach (var _node in file.CompilationUnit.DescendantsAndSelf) {
var node = _node;
if (CSharpAstResolver.IsUnresolvableNode(node))
@@ -66,8 +68,10 @@ namespace ICSharpCode.NRefactory.ConsistencyCheck
actions.Add(() => test.CheckStateAfter(node));
var expr = node as Expression;
if (expr != null) {
- //actions.Add(() => test.CheckExpectedType(node));
- //actions.Add(() => test.CheckConversion(node));
+ if (checkConversion)
+ actions.Add(() => test.CheckConversion(expr));
+ if (checkExpectedType)
+ actions.Add(() => test.CheckExpectedType(expr));
}
}
@@ -119,6 +123,30 @@ namespace ICSharpCode.NRefactory.ConsistencyCheck
return false;
}
+ bool CheckConversion(Expression node)
+ {
+ Conversion expectedConversion = resolveAllResolver.GetConversion(node);
+ Conversion actualConversion = resolver.GetConversion(node);
+ if (Compare(expectedConversion, actualConversion, typeof(Conversion)))
+ return true;
+ Console.WriteLine("Different conversions for '{0}' at {1} in {2}:", node, node.StartLocation, node.GetRegion().FileName);
+ Console.WriteLine(" expected: " + expectedConversion);
+ Console.WriteLine(" actual: " + actualConversion);
+ return false;
+ }
+
+ bool CheckExpectedType(Expression node)
+ {
+ IType expectedExpectedType = resolveAllResolver.GetExpectedType(node);
+ IType actualExpectedType = resolver.GetExpectedType(node);
+ if (expectedExpectedType.Equals(actualExpectedType))
+ return true;
+ Console.WriteLine("Different expected types for '{0}' at {1} in {2}:", node, node.StartLocation, node.GetRegion().FileName);
+ Console.WriteLine(" expected: " + expectedExpectedType);
+ Console.WriteLine(" actual: " + actualExpectedType);
+ return false;
+ }
+
bool IsEqualResolveResult(ResolveResult rr1, ResolveResult rr2)
{
if (rr1 == rr2)