ff99a0ce59
This is the result of: - taking the diff of the branch closure_conversion to master in the kernel repository - updating the file paths - applying the diff to the Dart SDK - fixing conflicts between the changes to pkg/kernel in the Dart SDK and the master branch in the kernel repository R=asgerf@google.com Review-Url: https://codereview.chromium.org/2561723003 .
30 lines
803 B
Dart
30 lines
803 B
Dart
// Copyright (c) 2016, 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.md file.
|
|
|
|
const int max = 100;
|
|
|
|
main() {
|
|
var closures = [];
|
|
var closures2 = [];
|
|
var last;
|
|
for (int i = 0; i < max; i++) {
|
|
closures.add(() => last = i);
|
|
closures2.add(() {
|
|
if (last != max - 1) throw "last: $last != ${max - 1}";
|
|
});
|
|
}
|
|
int sum = 0;
|
|
for (Function f in closures) {
|
|
sum += f();
|
|
}
|
|
for (Function f in closures2) {
|
|
f();
|
|
}
|
|
// This formula is credited to Gauss. Search for "Gauss adding 1 to 100".
|
|
int expectedSum = (max - 1) * max ~/ 2;
|
|
if (expectedSum != sum) {
|
|
throw new Exception("Unexpected sum = $sum != $expectedSum");
|
|
}
|
|
}
|