// 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.
/// @author ngl@unipro.ru


var C = null;

main() {
  C<int, String>? c;
//^
// [analyzer] unspecified
// [cfe] unspecified
}
