blob: ad4659ad418484a3d18754dbda6856d68d80e11a [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));
}