blob: a85a64819a9b0ab2f4aa03c7f7d784a9aa8e5bd2 [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 trying to access private instance class members
* from a script that imports the library where the class is declared result
* in a NoSuchMethodError.
* @author iefremov
* @reviewer rodionov
*/
import "../../../Utils/expect.dart";
import "../lib.dart";
check(f) {
try {
f();
Expect.fail(
"NoSuchMethodError expected when trying to access a private member!");
} on NoSuchMethodError catch (ok) {}
}
main() {
var c = new ClassWithPrivateMembers();
check(() {c._var = 1;});
check(() {c._fun();}); /// static type warning
check(() {print(c._finalvar);});
check(() {print(c._getter);});
check(() {c._setter = 1;});
}