|  | // 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; // //# 01: ok | 
|  | var as = 0; | 
|  | var dynamic = 0; | 
|  | var export = 0; | 
|  | var external = 0; // //# 01: ok | 
|  | var factory = 0; | 
|  | var get = 0; | 
|  | var implements = 0; | 
|  | var import = 0; | 
|  | var library = 0; | 
|  | var operator = 0; | 
|  | var part = 0; | 
|  | var set = 0; | 
|  | var static = 0; // //# 01: ok | 
|  | 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; // //# 01: ok | 
|  | } | 
|  | } | 
|  |  | 
|  | get: | 
|  | while (import > 0) { | 
|  | break get; | 
|  | } | 
|  |  | 
|  | return | 
|  | static + // //# 01: ok | 
|  | library * operator; | 
|  | } | 
|  | } | 
|  |  | 
|  | typedef(x) => "typedef $x"; // //# 01: ok | 
|  |  | 
|  | static(abstract) { // //# 01: ok | 
|  | return abstract == true; // //# 01: ok | 
|  | } // //# 01: ok | 
|  |  | 
|  | class A { | 
|  | var typedef = 0; | 
|  | final operator = "smooth"; | 
|  |  | 
|  | set(x) { | 
|  | typedef = x; | 
|  | } | 
|  |  | 
|  | get() => typedef - 5; | 
|  |  | 
|  | static static() { // //# 01: ok | 
|  | return 1; // //# 01: ok | 
|  | } // //# 01: ok | 
|  | static check() { | 
|  | var o = new A(); | 
|  | o.set(55); | 
|  | Expect.equals(50, o.get()); | 
|  | static(); // //# 01: ok | 
|  | } | 
|  | } | 
|  |  | 
|  | class B { | 
|  | var set = 100; | 
|  | get get => set; | 
|  | set get(get) => set = 2 * get.get; | 
|  |  | 
|  | static() { // //# 01: ok | 
|  | var set = new B(); // //# 01: ok | 
|  | set.get = set; // //# 01: ok | 
|  | Expect.equals(200, set.get); // //# 01: ok | 
|  | } // //# 01: ok | 
|  | 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(); // //# 01: ok | 
|  | Expect.equals(1, new B().operator()); | 
|  | Expect.equals(1, A.static()); // //# 01: ok | 
|  | typedef("T"); // //# 01: ok | 
|  | Expect.equals("typedef T", typedef("T")); // //# 01: ok | 
|  | static("true"); // //# 01: ok | 
|  | Expect.equals(false, static("true")); // //# 01: ok | 
|  | Expect.equals(5, C.operator); | 
|  | Expect.equals(null, C.get); | 
|  | C.set = 0; | 
|  | Expect.equals(111, C.set); | 
|  | } |