| // Copyright (c) 2022, 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. |
| |
| abstract class B { |
| call<T>(); |
| } |
| |
| /*member: C.:static=[Object.(0)]*/ |
| class C implements B { |
| /*member: C.call: |
| 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), |
| _setArrayType(2), |
| createRuntimeType(1), |
| findType(1), |
| instanceType(1), |
| print(1), |
| typeLiteral(1)], |
| type=[ |
| inst:Closure, |
| inst:JSArray<dynamic>, |
| inst:JSBool, |
| inst:JSExtendableArray<dynamic>, |
| inst:JSFixedArray<dynamic>, |
| inst:JSInt, |
| inst:JSMutableArray<dynamic>, |
| inst:JSNumNotInt, |
| inst:JSNumber, |
| inst:JSPositiveInt, |
| inst:JSUInt31, |
| inst:JSUInt32, |
| inst:JSUnmodifiableArray<dynamic>, |
| inst:Type, |
| inst:_Type, |
| lit:call.T, |
| param:Object?] |
| */ |
| call<T>() => print(T); |
| } |
| |
| abstract class A {} |
| |
| class Wrapper { |
| /*member: Wrapper.: |
| static=[ |
| Object.(0), |
| 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), |
| findType(1), |
| init:Wrapper.b, |
| init:Wrapper.call, |
| instanceType(1)], |
| type=[ |
| inst:Closure, |
| inst:JSBool, |
| param:B] |
| */ |
| Wrapper(this.b, this.call); |
| /*member: Wrapper.b: |
| 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), |
| findType(1), |
| instanceType(1)], |
| type=[ |
| inst:Closure, |
| inst:JSBool, |
| inst:JSNull, |
| param:B] |
| */ |
| final B b; |
| /*member: Wrapper.call: |
| 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), |
| findType(1), |
| instanceType(1)], |
| type=[ |
| inst:Closure, |
| inst:JSBool, |
| inst:JSNull, |
| param:B] |
| */ |
| final B call; |
| } |
| |
| /*member: main: |
| dynamic=[ |
| B.call<A>(0), |
| exact:C.call<A>(0), |
| exact:Wrapper.b, |
| exact:Wrapper.b<A>(0), |
| exact:Wrapper.call, |
| exact:Wrapper.call<A>(0)], |
| static=[ |
| C.(0), |
| Wrapper.(2)] |
| */ |
| void main() { |
| B b = C(); |
| b<A>(); |
| Wrapper(b, b).b<A>(); |
| (Wrapper(b, b).b)<A>(); |
| Wrapper(b, b).call<A>(); |
| (Wrapper(b, b).call)<A>(); |
| } |