| // 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. |
| |
| // @dart = 2.7 |
| |
| /*member: main: |
| static=[ |
| effectivelyFinalList(0), |
| effectivelyFinalPromoted(0), |
| effectivelyFinalPromotedInvalid(0), |
| notEffectivelyFinalList(0)] |
| */ |
| main() { |
| effectivelyFinalList(); |
| notEffectivelyFinalList(); |
| effectivelyFinalPromoted(); |
| effectivelyFinalPromotedInvalid(); |
| } |
| |
| /*member: effectivelyFinalList: |
| dynamic=[ |
| List.add(1), |
| List.length, |
| List.length=, |
| int.+], |
| type=[ |
| inst:JSInt, |
| inst:JSNull, |
| inst:JSNumNotInt, |
| inst:JSNumber, |
| inst:JSPositiveInt, |
| inst:JSUInt31, |
| inst:JSUInt32, |
| inst:List<dynamic>] |
| */ |
| effectivelyFinalList() { |
| dynamic c = []; |
| c.add(null); |
| c.length + 1; |
| c.length = 1; |
| } |
| |
| /*member: notEffectivelyFinalList: |
| dynamic=[ |
| +, |
| add(1), |
| call(1), |
| length, |
| length=], |
| type=[ |
| inst:JSInt, |
| inst:JSNull, |
| inst:JSNumNotInt, |
| inst:JSNumber, |
| inst:JSPositiveInt, |
| inst:JSUInt31, |
| inst:JSUInt32, |
| inst:List<dynamic>] |
| */ |
| notEffectivelyFinalList() { |
| dynamic c = []; |
| c.add(null); |
| c.length + 1; |
| c.length = 1; |
| c = null; |
| } |
| |
| /*member: _method1:type=[inst:JSNull]*/ |
| num _method1() => null; |
| |
| /*member: effectivelyFinalPromoted: |
| dynamic=[ |
| int.+, |
| num.+], |
| static=[ |
| Rti._bind(1), |
| Rti._eval(1), |
| _arrayInstanceType(1), |
| _asBool(1), |
| _asBoolQ(1), |
| _asBoolS(1), |
| _asDouble(1), |
| _asDoubleQ(1), |
| _asDoubleS(1), |
| _asInt(1), |
| _asIntQ(1), |
| _asIntS(1), |
| _asNum(1), |
| _asNumQ(1), |
| _asNumS(1), |
| _asObject(1), |
| _asString(1), |
| _asStringQ(1), |
| _asStringS(1), |
| _asTop(1), |
| _generalAsCheckImplementation(1), |
| _generalIsTestImplementation(1), |
| _generalNullableAsCheckImplementation(1), |
| _generalNullableIsTestImplementation(1), |
| _installSpecializedAsCheck(1), |
| _installSpecializedIsTest(1), |
| _instanceType(1), |
| _isBool(1), |
| _isInt(1), |
| _isNum(1), |
| _isObject(1), |
| _isString(1), |
| _isTop(1), |
| _method1(0), |
| findType(1), |
| instanceType(1)], |
| type=[ |
| inst:Closure, |
| inst:JSBool, |
| inst:JSInt, |
| inst:JSNumNotInt, |
| inst:JSNumber, |
| inst:JSPositiveInt, |
| inst:JSUInt31, |
| inst:JSUInt32, |
| is:int*] |
| */ |
| effectivelyFinalPromoted() { |
| dynamic c = _method1(); |
| c + 0; |
| if (c is int) { |
| c + 1; |
| } |
| } |
| |
| /*member: _method2:type=[inst:JSNull]*/ |
| String _method2() => null; |
| |
| /*member: effectivelyFinalPromotedInvalid: |
| dynamic=[ |
| String.+, |
| int.+], |
| static=[ |
| Rti._bind(1), |
| Rti._eval(1), |
| _arrayInstanceType(1), |
| _asBool(1), |
| _asBoolQ(1), |
| _asBoolS(1), |
| _asDouble(1), |
| _asDoubleQ(1), |
| _asDoubleS(1), |
| _asInt(1), |
| _asIntQ(1), |
| _asIntS(1), |
| _asNum(1), |
| _asNumQ(1), |
| _asNumS(1), |
| _asObject(1), |
| _asString(1), |
| _asStringQ(1), |
| _asStringS(1), |
| _asTop(1), |
| _generalAsCheckImplementation(1), |
| _generalIsTestImplementation(1), |
| _generalNullableAsCheckImplementation(1), |
| _generalNullableIsTestImplementation(1), |
| _installSpecializedAsCheck(1), |
| _installSpecializedIsTest(1), |
| _instanceType(1), |
| _isBool(1), |
| _isInt(1), |
| _isNum(1), |
| _isObject(1), |
| _isString(1), |
| _isTop(1), |
| _method2(0), |
| findType(1), |
| instanceType(1)], |
| type=[ |
| inst:Closure, |
| inst:JSBool, |
| inst:JSInt, |
| inst:JSNumNotInt, |
| inst:JSNumber, |
| inst:JSPositiveInt, |
| inst:JSString, |
| inst:JSUInt31, |
| inst:JSUInt32, |
| is:int*] |
| */ |
| effectivelyFinalPromotedInvalid() { |
| dynamic c = _method2(); |
| c + ''; |
| if (c is int) { |
| c + 1; |
| } |
| } |