blob: 0e55cc11cc66512f25ad5bfa75a2f3d78c3f0e4c [file] [log] [blame]
// Copyright (c) 2012, 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.
// Check that we can use pseudo keywords as names in function level code.
import "package:expect/expect.dart";
class PseudoKWTest {
static testMain() {
// This is a list of built-in identifiers from the Dart spec.
// It sanity checks that these pseudo-keywords are legal identifiers.
var abstract = 0;
var as = 0;
var call = 0;
var dynamic = 0;
var factory = 0;
var get = 0;
var implements = 0;
var import = 0;
var interface = 0;
var library = 0;
var negate = 0;
var operator = 0;
var set = 0;
var source = 0;
var static = 0;
var typedef = 0;
// "native" is a per-implementation extension that is not a part of the
// Dart language. While it is not an official built-in identifier, it
// is useful to ensure that it remains a legal identifier.
var native = 0;
// The code below adds a few additional variants of usage without any
// attempt at complete coverage.
{
void factory(set) {
return 0;
}
}
get: while (import > 0) {
break get;
}
return static + library * operator;
}
}
typedef(x) => "typedef $x";
static(abstract) {
return abstract == true;
}
class A {
var typedef = 0;
final operator = "smooth";
set(x) { typedef = x; }
get() => typedef - 5;
static static() {
return 1;
}
static check() {
var o = new A();
o.set(55);
Expect.equals(50, o.get());
static();
}
}
class B {
var set = 100;
get get => set;
set get(get) => set = 2 * get.get;
static() {
var set = new B();
set.get = set;
Expect.equals(200, set.get);
}
int operator() {
return 1;
}
}
class C {
static int operator = (5);
static var get;
static get set => 111;
static set set(set) { }
}
main() {
PseudoKWTest.testMain();
A.check();
new B().static();
Expect.equals(1, new B().operator());
Expect.equals(1, A.static());
typedef("T");
Expect.equals("typedef T", typedef("T"));
static("true");
Expect.equals(false, static("true"));
Expect.equals(5, C.operator);
Expect.equals(null, C.get);
C.set = 0;
Expect.equals(111, C.set);
}