blob: 9bd1cde8270b3f32d7d7929535e8247c2755b3a2 [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 checks that a variable assigned in the initializer of a late
// variable is considered captured, just as it would be if the assignment
// appeared inside a closure.
eagerVariableInitializerDoesNotCapture(Object x) {
f() {
if (x is String) {
// Promotion is ok because we know exactly when x might change.
/*String*/ x;
}
}
int y = (x = 0);
if (x is String) {
/*String*/ x;
}
f();
}
lateVariableInitializerCaptures(Object x) {
f() {
if (x is String) {
// x is not promoted because its value might change at any time.
x;
}
}
late int y = (x = 0);
if (x is String) {
// x is not promoted because its value might change at any time.
x;
}
f();
}