Files
sdk/tests/lib_2/js/array_test.dart
T
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

43 lines
1.3 KiB
Dart

// 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.
// @dart = 2.9
@JS()
library array_test;
import 'package:expect/expect.dart';
import 'package:js/js.dart';
import 'package:js/js_util.dart' as js;
main() {
testArrayConstructor();
}
/// Test that we can access .constructor() on a JS Array instance, regardless
/// of the reified generic type.
///
/// Regression test for https://github.com/dart-lang/sdk/issues/36372
testArrayConstructor() {
var list = <int>[1, 2, 3];
testArray = list;
// Call the consturctor with `new`.
var array = js.callConstructor(js.getProperty(testArray, 'constructor'), []);
var list2 = array as List;
Expect.listEquals(list2, []);
Expect.notEquals(list, list2, '$list2 should be a new list');
// We could return a reified type here, but currently does not to match
// dart2js, and because the Array is being returned to JS.
Expect.isFalse(list2 is List<int>,
'$list2 should not have a reified generic type (it was allocated by JS)');
list2.addAll([1, 2, 3]);
Expect.listEquals(list, list2);
}
external Object get testArray;
external set testArray(value);