Index: test/checker/checker_test.dart |
diff --git a/test/checker/checker_test.dart b/test/checker/checker_test.dart |
index f038857b61d49941cc4617b67e3e3ea47bd7099b..f35990c3fcd9ad5c9fd696d381006b91ff3e6f01 100644 |
--- a/test/checker/checker_test.dart |
+++ b/test/checker/checker_test.dart |
@@ -16,7 +16,13 @@ void main() { |
test('conversion and dynamic invoke', () { |
testChecker({ |
+ '/helper.dart': ''' |
+ dynamic toString = (int x) => x + 42; |
+ dynamic hashCode = "hello"; |
+ ''', |
'/main.dart': ''' |
+ import 'helper.dart' as helper; |
+ |
class A { |
String x = "hello world"; |
@@ -28,10 +34,16 @@ void main() { |
print(str); |
} |
+ class B { |
+ String toString([int arg]) => arg.toString(); |
+ } |
+ |
void bar(a) { |
foo(/*info:DynamicCast,info:DynamicInvoke*/a.x); |
} |
+ baz() => new B(); |
+ |
typedef DynFun(x); |
typedef StrFun(String x); |
@@ -58,6 +70,27 @@ void main() { |
A.baz2("hello"); |
var b2 = A.baz2; |
(/*info:DynamicInvoke*/b2("hello")); |
+ |
+ dynamic a1 = new B(); |
+ (/*info:DynamicInvoke*/a1.x); |
+ a1.toString(); |
+ (/*info:DynamicInvoke*/a1.toString(42)); |
+ var toStringClosure = a1.toString; |
+ (/*info:DynamicInvoke*/a1.toStringClosure()); |
+ (/*info:DynamicInvoke*/a1.toStringClosure(42)); |
+ (/*info:DynamicInvoke*/a1.toStringClosure("hello")); |
+ a1.hashCode; |
+ |
+ dynamic toString = () => null; |
+ (/*info:DynamicInvoke*/toString()); |
+ |
+ (/*info:DynamicInvoke*/helper.toString()); |
+ var toStringClosure2 = helper.toString; |
+ (/*info:DynamicInvoke*/toStringClosure2()); |
+ int hashCode = /*info:DynamicCast*/helper.hashCode; |
+ |
+ baz().toString(); |
+ baz().hashCode; |
''' |
}); |
}); |