blob: 36f6faf8c40433b1d137d6a2ced35782cd3c341c [file] [log] [blame]
// Copyright (c) 2011, 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 A type T is malformed iff:
/// • T has the form id or the form prefix.id, and in the enclosing lexical
/// scope, the name id (respectively prefix.id) does not denote a type.
/// • T denotes a type variable in the enclosing lexical scope, but occurs in
/// the signature or body of a static member.
/// • T is a parameterized type of the form G<S1, ..., Sn>, and G is malformed.
/// • T denotes declarations that were imported from multiple imports clauses.
/// Any use of a malformed type gives rise to a static warning. A malformed type
/// is then interpreted as dynamic by the static type checker and the runtime
/// unless explicitly specified otherwise.
/// @description Checks that it is a compile error if a type variable is used
/// in static context as a type of a local variable in a static method.
/// @author kaigorodov
class C<T> {
static f() {
T? v = null;
// ^
// [analyzer] unspecified
// [cfe] unspecified
return v;
}
}
main() {
C.f();
}