dart-sdk/tests/language/unsorted/branches_test.dart
Robert Nystrom d4154ac6dc Migrate language_2/unsorted to NNBD.
Change-Id: Iad2963c7f9c184b089dc6d15aa4442f58d194bc2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/151983
Reviewed-by: Nicholas Shahan <nshahan@google.com>
Commit-Queue: Bob Nystrom <rnystrom@google.com>
Auto-Submit: Bob Nystrom <rnystrom@google.com>
2020-06-26 18:34:14 +00:00

160 lines
5.7 KiB
Dart

// Copyright (c) 2011, 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.
// Dart test for branches. Make sure that shortcuts work, even if they have
// to jump over several expressions.
import "package:expect/expect.dart";
class BranchesTest {
static bool f() {
Expect.equals("Never reached", 0);
return true;
}
static void testMain() {
int checkPointCounter = 1;
int checkPoint1 = 0;
int checkPoint2 = 0;
int checkPoint3 = 0;
int checkPoint4 = 0;
int checkPoint5 = 0;
int checkPoint6 = 0;
int i = 0;
for (int i = 0; i < 2; i++) {
if (i == 0) {
checkPoint1 += checkPointCounter++;
if (true || // Test branch-if-true.
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f()) {
checkPoint2 += checkPointCounter++;
}
} else {
// Test branch (jumping over the else branch).
checkPoint3 += checkPointCounter++;
if (false) {
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
}
}
checkPoint5 += checkPointCounter++;
}
checkPoint6 += checkPointCounter++;
Expect.equals(1, checkPoint1);
Expect.equals(2, checkPoint2);
Expect.equals(4, checkPoint3);
Expect.equals(0, checkPoint4);
Expect.equals(8, checkPoint5);
Expect.equals(6, checkPoint6);
}
}
main() {
BranchesTest.testMain();
}