blob: ef161505081431aca76ecc9989ef7362d0cd4eff [file] [log] [blame]
// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
// @dart=2.9
/*@testedFeatures=inference*/
library test;
class F0<T> {
F0(List<T> a) {}
}
class F1<T> {
F1({List<T> a}) {}
}
class F2<T> {
F2(Iterable<T> a) {}
}
class F3<T> {
F3(Iterable<Iterable<T>> a) {}
}
class F4<T> {
F4({Iterable<Iterable<T>> a}) {}
}
void test() {
new F0<int>(/*@ typeArgs=int* */ []);
new F0<int>(/*@ typeArgs=int* */ [3]);
new F0<int>(
/*@ typeArgs=int* */ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ "hello"]);
new F0<int>(/*@ typeArgs=int* */ [
/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ "hello",
3
]);
new F1<int>(a: /*@ typeArgs=int* */ []);
new F1<int>(a: /*@ typeArgs=int* */ [3]);
new F1<int>(a: /*@ typeArgs=int* */ [
/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ "hello"
]);
new F1<int>(a: /*@ typeArgs=int* */ [
/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ "hello",
3
]);
new F2<int>(/*@ typeArgs=int* */ []);
new F2<int>(/*@ typeArgs=int* */ [3]);
new F2<int>(
/*@ typeArgs=int* */ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ "hello"]);
new F2<int>(/*@ typeArgs=int* */ [
/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ "hello",
3
]);
new F3<int>(/*@ typeArgs=Iterable<int*>* */ []);
new F3<int>(/*@ typeArgs=Iterable<int*>* */ [
/*@ typeArgs=int* */ [3]
]);
new F3<int>(/*@ typeArgs=Iterable<int*>* */ [
/*@ typeArgs=int* */ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ "hello"]
]);
new F3<int>(/*@ typeArgs=Iterable<int*>* */ [
/*@ typeArgs=int* */ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ "hello"],
/*@ typeArgs=int* */ [3]
]);
new F4<int>(a: /*@ typeArgs=Iterable<int*>* */ []);
new F4<int>(a: /*@ typeArgs=Iterable<int*>* */ [
/*@ typeArgs=int* */ [3]
]);
new F4<int>(a: /*@ typeArgs=Iterable<int*>* */ [
/*@ typeArgs=int* */ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ "hello"]
]);
new F4<int>(a: /*@ typeArgs=Iterable<int*>* */ [
/*@ typeArgs=int* */ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ "hello"],
/*@ typeArgs=int* */ [3]
]);
new /*@ typeArgs=dynamic */ F3(/*@ typeArgs=Iterable<dynamic>* */ []);
var /*@ type=F3<int*>* */ f31 = new /*@ typeArgs=int* */ F3(/*@ typeArgs=List<int*>* */ [
/*@ typeArgs=int* */ [3]
]);
var /*@ type=F3<String*>* */ f32 =
new /*@ typeArgs=String* */ F3(/*@ typeArgs=List<String*>* */ [
/*@ typeArgs=String* */ ["hello"]
]);
var /*@ type=F3<Object*>* */ f33 =
new /*@ typeArgs=Object* */ F3(/*@ typeArgs=List<Object*>* */ [
/*@ typeArgs=String* */ ["hello"],
/*@ typeArgs=int* */ [3]
]);
new /*@ typeArgs=dynamic */ F4(a: /*@ typeArgs=Iterable<dynamic>* */ []);
new /*@ typeArgs=int* */ F4(a: /*@ typeArgs=List<int*>* */ [
/*@ typeArgs=int* */ [3]
]);
new /*@ typeArgs=String* */ F4(a: /*@ typeArgs=List<String*>* */ [
/*@ typeArgs=String* */ ["hello"]
]);
new /*@ typeArgs=Object* */ F4(a: /*@ typeArgs=List<Object*>* */ [
/*@ typeArgs=String* */ ["hello"],
/*@ typeArgs=int* */ [3]
]);
}
main() {}