blob: ce22b16dd8015e364d93b4016e456c5bf403ee07 [file] [log] [blame]
// Copyright (c) 2019, 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.
Object g() => Null;
void for_declaredVar() {
for (Object x = g(); x is int; x = g()) {
/*int*/ x;
}
}
void for_outerIsType(bool b, Object x) {
if (x is String) {
for (; b;) {
/*String*/ x;
}
/*String*/ x;
}
}
void for_outerIsType_loopAssigned_body(bool b, Object x) {
if (x is String) {
for (; b;) {
x;
x = 42;
}
x;
}
}
void for_outerIsType_loopAssigned_body_emptyCondition(bool b, Object x) {
if (x is String) {
for (;;) {
if (!b) break;
x;
x = 42;
}
x;
}
}
void for_outerIsType_loopAssigned_condition(Object x) {
if (x is String) {
for (; (x = 42) > 0;) {
x;
}
x;
}
}
void for_outerIsType_loopAssigned_updaters(bool b, Object x) {
if (x is String) {
for (; b; x = 42) {
x;
}
x;
}
}
void for_outerIsType_loopAssigned_updaters_emptyCondition(bool b, Object x) {
if (x is String) {
for (;; x = 42) {
if (!b) break;
x;
}
x;
}
}
void forEach_outerIsType_loopAssigned(Object x) {
if (x is String) {
for (var _ in [0, 1, 2]) {
x;
x = 42;
}
x;
}
}
void collection_for_declaredVar() {
[for (Object x = g(); x is int; x = g()) /*int*/ x ];
}
void collection_for_outerIsType(bool b, Object x) {
if (x is String) {
[for (; b;) /*String*/ x ];
/*String*/ x;
}
}
void collection_for_outerIsType_loopAssigned_body(bool b, Object x) {
if (x is String) {
[
for (; b;) [x, (x = 42)]
];
x;
}
}
void collection_for_outerIsType_loopAssigned_body_emptyCondition(Object x) {
if (x is String) {
[
for (;;) [x, (x = 42)]
];
x;
}
}
void collection_for_outerIsType_loopAssigned_condition(Object x) {
if (x is String) {
[for (; (x = 42) > 0;) x];
x;
}
}
void collection_for_outerIsType_loopAssigned_updaters(bool b, Object x) {
if (x is String) {
[for (; b; x = 42) x];
x;
}
}
void collection_for_outerIsType_loopAssigned_updaters_emptyCondition(Object x) {
if (x is String) {
[for (;; x = 42) x];
x;
}
}
void collection_forEach_outerIsType_loopAssigned(Object x) {
if (x is String) {
[
for (var _ in [0, 1, 2]) [x, (x = 42)]
];
x;
}
}
void assign_var_declared_in_loop() {
for (int x = 0; x < 10; x++) {
bool b = true;
b = false;
}
}
void forEach_noDemotion(Object? x, List<int> y) {
if (x is int) {
/*int*/ x;
for (x in y) {
/*int*/ x;
}
/*int*/ x;
}
}
void forEach_partialDemotion(Object? x, List<num> y) {
if (x is num) {
if (/*num*/ x is int) {
/*int*/ x;
for (x in y) {
/*num*/ x;
}
/*num*/ x;
}
}
}
void collection_forEach_noDemotion(Object? x, List<int> y) {
if (x is int) {
/*int*/ x;
[for (x in y) /*int*/ x ];
/*int*/ x;
}
}
void collection_forEach_partialDemotion(Object? x, List<num> y) {
if (x is num) {
if (/*num*/ x is int) {
/*int*/ x;
[for (x in y) /*num*/ x ];
/*num*/ x;
}
}
}