blob: a719b9c2403695c5d2d0b6486d4134a77b18767d [file] [log] [blame]
// Copyright (c) 2016, 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 is a parameterized
* type of the form C<int, String>, and C is malformed.
* @compile-error
* @author ngl@unipro.ru
*/
var C = null;
main() {
C<int, String>? c;
}