blob: bbf8353045d55a4957ce7a819a9aa35c85ec21ae [file] [log] [blame]
// Copyright (c) 2020, 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.
/// @assertion Note that free type variables which are explicitly used as type
/// arguments in const generic instances are still considered erroneous.
///
/// class G<T> {
/// void foo() {
/// const List<T> c = <T>[]; // Error
/// const List<T> d = []; // The list literal is inferred as <Never>[]
/// }
/// }
///
/// @description Check that compile error is thrown when free type variable is
/// explicity used in the const generic instance.
///
/// @author iarkh@unipro.ru
class G1<T> {
void foo() {
const List<T> l1 = <T>[];
// ^
// [analyzer] unspecified
// [cfe] unspecified
const List l2 = <T>[];
// ^
// [analyzer] unspecified
// [cfe] unspecified
}
}
class G2<T extends int> {
void foo() {
const List<T> l1 = <T>[];
// ^
// [analyzer] unspecified
// [cfe] unspecified
const List l2 = <T>[];
// ^
// [analyzer] unspecified
// [cfe] unspecified
}
}
main() {
G1().foo();
G2().foo();
}