blob: ee1e6a760898709103c383a81fd8472508e18bec [file] [log] [blame]
 // Copyright (c) 2018, 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 If a for element declares a variable, then a new namespace is /// created on each iteration where that variable is defined. The body of the for /// element is resolved and evaluated in that namespace. The variable goes out of /// scope at the end of the for element's body. /// /// @description Checks that if a for element declares a variable, then the /// variable goes out of scope at the end of the for element's body. /// @author sgrekhov@unipro.ru import "../../Utils/expect.dart"; main() { List list1 = [ for (var i = 1; i < 4; i++) i, for (var i in [1, 2, 3]) i ]; Expect.listEquals([1, 2, 3, 1, 2, 3], list1); List list2 = [ for (var i = 1; i < 3; i++) for (var j = 1; j < 3; j++) i + j, for (var i in [2, 3]) for (var j in [1, 2]) i + j ]; Expect.listEquals([2, 3, 3, 4, 3, 4, 4, 5], list2); List list3 = [ for (var i = 1; i < 3; i++) for (var j = i; j < 4; j++) i + j, ]; Expect.listEquals([2, 3, 4, 4, 5], list3); var x = "a"; List list4 = [ for (var x in ["b", "c"]) x, x ]; Expect.listEquals(["b", "c", "a"], list4); }