blob: 3170ab4d82a9db47b11f2c33c0a4eb13b7dad843 [file] [log] [blame]
// Copyright (c) 2021, 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.
import 'package:expect/expect.dart';
class Foo {
static int _next = 0;
var field0 = ++_next;
var field1 = ++_next;
var field2 = ++_next;
var field3 = ++_next;
var field4 = ++_next;
var field5 = ++_next;
var field6 = ++_next;
var field7 = ++_next;
var field8 = ++_next;
var field9 = ++_next;
var field10 = ++_next;
var field11 = ++_next;
var field12 = ++_next;
var field13 = ++_next;
var field14 = ++_next;
var field15 = ++_next;
var field16 = ++_next;
var field17 = ++_next;
var field18 = ++_next;
var field19 = ++_next;
var field20 = ++_next;
var field21 = ++_next;
var field22 = ++_next;
var field23 = ++_next;
var field24 = ++_next;
var field25 = ++_next;
var field26 = ++_next;
var field27 = ++_next;
var field28 = ++_next;
var field29 = ++_next;
var field30 = ++_next;
var field31 = ++_next;
@pragma('vm:never-inline')
String toString() => '$field0 $field1 $field2 $field3 $field4 $field5'
'$field6 $field7 $field8 $field9 $field10 $field11'
'$field12 $field13 $field14 $field15 $field16 $field17'
'$field18 $field19 $field20 $field21 $field22 $field23'
'$field24 $field25 $field26 $field27 $field28 $field29'
'$field30 $field3';
}
// The TypeArgumentVector will be at an offset that cannot be loaded from via
// normal addresing mode on ARM64.
class GenericFoo<T> extends Foo {}
final l = <dynamic>[GenericFoo<int>(), null, 1, 1.0];
main() {
final dynamic genericFoo = l[0];
Expect.isTrue(genericFoo.toString().length > 0); // Keep the fields alive.
Expect.isTrue(identical(genericFoo as GenericFoo<int>, genericFoo));
}