diff options
author | Daniel Grunwald <daniel@danielgrunwald.de> | 2012-03-15 19:58:00 +0400 |
---|---|---|
committer | Daniel Grunwald <daniel@danielgrunwald.de> | 2012-03-15 19:58:00 +0400 |
commit | e80f14238191aaace87932760d3640f22ace42d5 (patch) | |
tree | e8d12c25aa1c767ea31f5d5282fe83b978ff18c8 /ICSharpCode.NRefactory.ConsistencyCheck | |
parent | f74bf908bc7e3cdbd85315f118836688135eb344 (diff) |
Fixed bug in CSharpAstResolver.GetExpectedType().
Diffstat (limited to 'ICSharpCode.NRefactory.ConsistencyCheck')
-rw-r--r-- | ICSharpCode.NRefactory.ConsistencyCheck/RandomizedOrderResolverTest.cs | 32 |
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) |