Files
sdk/tests/language/closure/in_initializer_test.dart
T
Robert Nystrom 6cc9efe290 Reformat tests/language/c*.
Change-Id: I94dfcea40566190c6bf153c108b0d0d5dbf27a4d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/400148
Commit-Queue: Bob Nystrom <rnystrom@google.com>
Reviewed-by: Lasse Nielsen <lrn@google.com>
Auto-Submit: Bob Nystrom <rnystrom@google.com>
2024-12-12 15:50:08 -08:00

48 lines
1.0 KiB
Dart

// Copyright (c) 2012, 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.
// Test that a parameter used in two different closures defined in a
// constructor initializer, is properly boxed.
import "package:expect/expect.dart";
class A {
var f;
var g;
A(a) : f = (() => 42 + a), g = (() => ++a) {
a = 4;
}
}
class B extends A {
B() : super(42);
}
class C extends A {
var h;
C(a) : h = (() => ++a), super(42);
}
main() {
dynamic a = new A(1);
Expect.equals(46, a.f());
Expect.equals(5, a.g());
Expect.equals(47, a.f());
a = new B();
Expect.equals(46, a.f());
Expect.equals(5, a.g());
Expect.equals(47, a.f());
a = new C(0);
Expect.equals(46, a.f());
Expect.equals(5, a.g());
Expect.equals(47, a.f());
Expect.equals(1, a.h());
Expect.equals(2, a.h());
Expect.equals(47, a.f());
Expect.equals(6, a.g());
Expect.equals(48, a.f());
}