blob: 52ea0a137296dfc196f5f40c9f7b6df7e8cec054 [file] [log] [blame] [edit]
// 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 Dart supports two levels of privacy: public and private.
/// A declaration is private iff its name is private, otherwise it is public.
/// A name q is private iff any one of the identifiers that comprise q is
/// private, otherwise it is public.
/// An identifier is private iff it begins with an underscore (the _ character)
/// otherwise it is public.
/// A declaration m is accessible to library L if m is declared in L or if m is
/// public.
/// @description Checks that type parameter names can begin with an underscore
/// and are still accessible in the appropriate scope.
/// @author iefremov
class G<_x, _$, __> {
_x? x = null;
_$? y = null;
__? z;
}
class G2<A, B, C> extends G<A, B, C> {}
class G3<_X> extends G<_X, _X, _X>{}
main() {
new G<int, String, double>();
new G2<int, String, double>();
new G3<int>();
}