static private MustRewriteChildToSameType ( object p0, object p1, object p2 ) : |
||
p0 | object | |
p1 | object | |
p2 | object | |
return |
private static void ValidateChildType(Type before, Type after, string methodName) { if (before.IsValueType) { if (TypeUtils.AreEquivalent(before, after)) { return; } } else if (!after.IsValueType) { return; } throw Error.MustRewriteChildToSameType(before, after, methodName); }
// Value types must stay as the same type, otherwise it's now a // different operation, e.g. adding two doubles vs adding two ints. private static void ValidateChildType(Type before, Type after, string methodName) { if (before.GetTypeInfo().IsValueType) { if (TypeUtils.AreEquivalent(before, after)) { // types are the same value type return; } } else if (!after.GetTypeInfo().IsValueType) { // both are reference types return; } // Otherwise, it's an invalid type change. throw Error.MustRewriteChildToSameType(before, after, methodName); }