dart-sdk/tests/lib_2/mirrors/globalized_closures_test.dart
Leaf Petersen b101a7d002 Add language versions to _2 test libraries
Change-Id: Ib33169c3e0ffc870915c189404074a1dea472546
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/196548
Reviewed-by: Bob Nystrom <rnystrom@google.com>
Commit-Queue: Leaf Petersen <leafp@google.com>
2021-04-26 17:58:57 +00:00

38 lines
1.1 KiB
Dart

// Copyright (c) 2014, 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 = 2.9
// Dart2js crashed on this example. It globalized closures and created
// top-level classes for closures (here the globalized_closure). There was a
// name-clash with the global "main_closure" class which led to a crash.
library main;
import 'dart:mirrors';
import 'package:expect/expect.dart';
class main_closure {}
confuse(x) {
if (new DateTime.now().millisecondsSinceEpoch == 42) return confuse(() => 42);
return x;
}
main() {
new main_closure();
var globalized_closure = confuse(() => 499);
globalized_closure();
final ms = currentMirrorSystem();
var lib = ms.findLibrary(#main);
var collectedParents = [];
var classes = lib.declarations.values;
for (var c in classes) {
if (c is ClassMirror && c.superclass != null) {
collectedParents.add(MirrorSystem.getName(c.superclass.simpleName));
}
}
Expect.listEquals(["Object"], collectedParents); // //# 00: ok
}