// 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.7 import 'dart:collection'; /*member: dynamicIndex:Specializer=[!Index]*/ @pragma('dart2js:noInline') dynamicIndex(var list) { return list[0]; // This not known to be an indexable primitive. } /*member: unknownListIndex:Specializer=[!Index]*/ @pragma('dart2js:noInline') unknownListIndex(List list) { return list[0]; // This not known to be an indexable primitive. } /*member: possiblyNullMutableListIndex:Specializer=[Index]*/ @pragma('dart2js:noInline') possiblyNullMutableListIndex(bool b) { var list = b ? [0] : null; return list[0]; } /*member: mutableListIndex:Specializer=[Index]*/ @pragma('dart2js:noInline') mutableListIndex() { var list = [0]; return list[0]; } /*member: mutableListDynamicIndex:Specializer=[Index]*/ @pragma('dart2js:noInline') mutableListDynamicIndex(dynamic index) { var list = [0]; return list[index]; // CFE inserts an implicit cast of the index. } /*spec.member: mutableDynamicListDynamicIndex:Specializer=[!Index]*/ /*prod.member: mutableDynamicListDynamicIndex:Specializer=[Index]*/ @pragma('dart2js:noInline') @pragma('dart2js:disableFinal') mutableDynamicListDynamicIndex(dynamic index) { dynamic list = [0]; return list[index]; } main() { dynamicIndex([]); dynamicIndex({}); unknownListIndex([]); unknownListIndex(new MyList()); possiblyNullMutableListIndex(true); possiblyNullMutableListIndex(false); mutableListIndex(); mutableListDynamicIndex(0); mutableListDynamicIndex(''); mutableDynamicListDynamicIndex(0); mutableDynamicListDynamicIndex(''); } class MyList extends ListBase { E operator [](int index) => null; void operator []=(int index, E value) {} int get length => 0; void set length(int value) {} }