// Copyright (c) 2018, 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. // VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit // VMOptions=--no-enable-isolate-groups // Verifies that large typed data can be passed in a field through message port. // This is a regression test for // https://github.com/flutter/flutter/issues/22796. import 'dart:io'; import 'dart:isolate'; import 'dart:typed_data'; import "package:expect/expect.dart"; class A { // TFA thinks this field has type _Int32List but sending an object across // a message port creates an instance that has _ExternalInt32List inside. final _int32Array = new Int32List(5 * 1024); A() { _int32Array.setRange( 0, _int32Array.length, Iterable.generate(_int32Array.length)); verify(); } void verify() { for (var i = 0; i < _int32Array.length; i++) { if (_int32Array[i] != i) { print('_int32Array[$i]: ${_int32Array[i]} != ${i}'); } Expect.equals(i, _int32Array[i]); } } } void main() { final rp = new ReceivePort(); rp.listen((dynamic data) { (data as A).verify(); print("ok"); exit(0); }); rp.sendPort.send(A()); }