Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(797)

Unified Diff: pkg/analyzer/test/generated/type_system_test.dart

Issue 2540903003: restrict generic function type subtyping (Closed)
Patch Set: fix Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/analyzer/test/generated/type_system_test.dart
diff --git a/pkg/analyzer/test/generated/type_system_test.dart b/pkg/analyzer/test/generated/type_system_test.dart
index 6aa2ad152ee9a8bd88438adcae751e4ab20ea842..e15b0949e728e043e7c8e9f1894c7786458345de 100644
--- a/pkg/analyzer/test/generated/type_system_test.dart
+++ b/pkg/analyzer/test/generated/type_system_test.dart
@@ -1608,15 +1608,42 @@ class StrongSubtypingTest {
DartType u = TypeBuilder.variable("U", bound: intType);
DartType v = TypeBuilder.variable("V", bound: u);
+ DartType a = TypeBuilder.variable("A");
+ DartType b = TypeBuilder.variable("B", bound: a);
+ DartType c = TypeBuilder.variable("C", bound: intType);
+ DartType d = TypeBuilder.variable("D", bound: c);
+
_checkIsStrictSubtypeOf(
TypeBuilder.function(types: [s, t], required: [s], result: t),
+ TypeBuilder.function(
+ types: [a, b], required: [dynamicType], result: dynamicType));
+
+ _checkIsNotSubtypeOf(
+ TypeBuilder.function(types: [u, v], required: [u], result: v),
+ TypeBuilder.function(
+ types: [c, d], required: [objectType], result: objectType));
+
+ _checkIsNotSubtypeOf(
+ TypeBuilder.function(types: [u, v], required: [u], result: v),
+ TypeBuilder
+ .function(types: [c, d], required: [intType], result: intType));
+ }
+
+ void test_genericFunction_nonGenericDoesNotSubtypeGeneric() {
Leaf 2016/12/02 01:59:10 This name is backwards isn't it? Should be _gener
Jennifer Messerly 2016/12/02 03:24:00 yes. thank you :)
+ DartType s = TypeBuilder.variable("S");
+ DartType t = TypeBuilder.variable("T", bound: s);
+ DartType u = TypeBuilder.variable("U", bound: intType);
+ DartType v = TypeBuilder.variable("V", bound: u);
+
+ _checkIsNotSubtypeOf(
+ TypeBuilder.function(types: [s, t], required: [s], result: t),
TypeBuilder.function(required: [dynamicType], result: dynamicType));
_checkIsNotSubtypeOf(
TypeBuilder.function(types: [u, v], required: [u], result: v),
TypeBuilder.function(required: [objectType], result: objectType));
- _checkIsStrictSubtypeOf(
+ _checkIsNotSubtypeOf(
TypeBuilder.function(types: [u, v], required: [u], result: v),
TypeBuilder.function(required: [intType], result: intType));
}

Powered by Google App Engine
This is Rietveld 408576698