| // TODO(multitest): This was automatically migrated from a multitest and may | |
| // contain strange or dead code. | |
| // Copyright (c) 2013, 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. | |
| // Test compile-time errors for illegal variable declarations if the name | |
| // has been referenced before the variable is declared. | |
| import 'dart:math' as math; | |
| use(value) => value; | |
| var x = 0; | |
| final y = 0; | |
| class C { | |
| var f; | |
| C() : f = 'How do you spell PTSD?'; | |
| void test1() { | |
| use(f); // Refers to instance field f. | |
| } | |
| void test2() { | |
| void localFunc() { | |
| use(f); // Refers to instance field f. | |
| } | |
| if (true) { | |
| var f = 1; // ok, shadows outer f and instance field f. | |
| } | |
| } | |
| void test3() { | |
| if (true) { | |
| use(x); // Refers to top-level x. | |
| use(y); // Refers to top-level y. | |
| } | |
| } | |
| void test4() { | |
| void Q() {} | |
| } | |
| test() { | |
| test1(); | |
| test2(); | |
| test3(); | |
| test4(); | |
| } | |
| } | |
| void testTypeRef() { | |
| String s = 'Can vegetarians eat animal crackers?'; | |
| } | |
| void testLibPrefix() { | |
| var pie = math.pi; | |
| } | |
| void noErrorsExpected() { | |
| use(x); | |
| for (var x = 0; x < 10; x++) use(x); | |
| for (var i = 0; i < 10; i++) var x = 0; | |
| if (true) var x = 0; | |
| while (false) var x = 0; | |
| try { | |
| throw "ball"; | |
| } catch (x) { | |
| use(x); | |
| } | |
| switch (x) { | |
| case 0: | |
| var x = 'Does fuzzy logic tickle?'; | |
| } | |
| var int = 007; | |
| } | |
| void main() { | |
| var c = new C(); | |
| c.test(); | |
| testTypeRef(); | |
| testLibPrefix(); | |
| noErrorsExpected(); | |
| } |