// 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(); }