blob: fe34fb34afd10996c15d003597a5f55124225174 [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 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 function parameter names can begin with an
/// underscore and are still accessible in the appropriate scope.
/// @author iefremov
import "../../../Utils/expect.dart";
class A {
fun(_, _$, ___) {return _ + _$ + ___;}
static staticfun(_, _$, __) {return _ + _$ + __;}
var _check;
var __;
A(_, _$, this.__) : _check = _ + _$ {}
A.named(_, _$, ___) : _check = _ + _$ + ___ {}
void set _setter(_) {__ = _;}
}
foo(var _x, int _) {
return _x + _;
}
main() {
Expect.equals(4, foo(2, 2));
var a = new A(1, 2, 3);
Expect.equals(3, a._check);
Expect.equals(3, a.__);
Expect.equals(6, new A.named(1, 2, 3)._check);
a._setter = 54;
Expect.equals(54, a.__);
Expect.equals(6, A.staticfun(1, 2, 3));
Expect.equals(1, ((_) => _)(1));
}