blob: 46f549c6aa58dc59a4c847cd314716b74a9528e7 [file] [log] [blame]
// Copyright (c) 2020, 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.
// This test verifies that when a late variable is read prior to its first
// assignment, but the read and the assignment occur within the body of a loop,
// that there is no compile-time error, because the assignment may happen in an
// earlier iteration than the read.
import 'package:expect/expect.dart';
void forLoop() {
late int x;
for (int i = 0; i < 2; i++) {
if (i == 1) {
Expect.equals(x, 10);
}
if (i == 0) {
x = 10;
}
}
}
void forEach() {
late int x;
for (bool b in [false, true]) {
if (b) {
Expect.equals(x, 10);
}
if (!b) {
x = 10;
}
}
}
void whileLoop() {
late int x;
int i = 0;
while (i < 2) {
if (i == 1) {
Expect.equals(x, 10);
}
if (i == 0) {
x = 10;
}
i++;
}
}
void doLoop() {
late int x;
int i = 0;
do {
if (i == 1) {
Expect.equals(x, 10);
}
if (i == 0) {
x = 10;
}
i++;
} while (i < 2);
}
main() {
forLoop();
forEach();
whileLoop();
doLoop();
}