blob: 7ff1527a666021f379fecc51bae75edbd8ee78f0 [file] [log] [blame]
// 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.
class A {}
class B {}
class C {}
class D {}
class E {}
/*member: Class1.:static=[Object.(0)]*/
class Class1 {
/*member: Class1.field1:static=[Rti._bind(1),Rti._eval(1),_arrayInstanceType(1),_asBoolNullable(1),_asDoubleNullable(1),_asIntNullable(1),_asNumNullable(1),_asObject(1),_asStringNullable(1),_asTop(1),_checkBoolNullable(1),_checkDoubleNullable(1),_checkIntNullable(1),_checkNumNullable(1),_checkObject(1),_checkStringNullable(1),_generalAsCheckImplementation(1),_generalIsTestImplementation(1),_generalTypeCheckImplementation(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:A]*/
A field1;
}
/*member: method1:dynamic=[Class1.field1=],static=[Rti._bind(1),Rti._eval(1),_arrayInstanceType(1),_asBoolNullable(1),_asDoubleNullable(1),_asIntNullable(1),_asNumNullable(1),_asObject(1),_asStringNullable(1),_asTop(1),_checkBoolNullable(1),_checkDoubleNullable(1),_checkIntNullable(1),_checkNumNullable(1),_checkObject(1),_checkStringNullable(1),_generalAsCheckImplementation(1),_generalIsTestImplementation(1),_generalTypeCheckImplementation(1),_instanceType(1),_isBool(1),_isInt(1),_isNum(1),_isObject(1),_isString(1),_isTop(1),findType(1),instanceType(1)],type=[impl:A,inst:Closure,inst:JSBool,is:Class1]*/
method1(dynamic o, dynamic value) {
if (o is! Class1) return;
o.field1 = value;
}
/*member: Class2.:static=[Object.(0)]*/
class Class2<T> {
/*member: Class2.field2:
static=*,
type=[inst:*,param:Class2.T]
*/
T field2;
}
/*member: method2:
dynamic=[Class2.field2=],
static=*,
type=[
impl:A,
inst:*,
is:Class2<A>]
*/
method2(dynamic o, dynamic value) {
if (o is! Class2<A>) return;
o.field2 = value;
}
/*member: Class3.:static=[Object.(0)]*/
class Class3 {
/*member: Class3.method3:static=[Rti._bind(1),Rti._eval(1),_arrayInstanceType(1),_asBoolNullable(1),_asDoubleNullable(1),_asIntNullable(1),_asNumNullable(1),_asObject(1),_asStringNullable(1),_asTop(1),_checkBoolNullable(1),_checkDoubleNullable(1),_checkIntNullable(1),_checkNumNullable(1),_checkObject(1),_checkStringNullable(1),_generalAsCheckImplementation(1),_generalIsTestImplementation(1),_generalTypeCheckImplementation(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:A,param:B,param:C]*/
method3(A a, [B b, C c]) {}
}
/*member: method3:dynamic=[Class3.method3(3)],static=[Rti._bind(1),Rti._eval(1),_arrayInstanceType(1),_asBoolNullable(1),_asDoubleNullable(1),_asIntNullable(1),_asNumNullable(1),_asObject(1),_asStringNullable(1),_asTop(1),_checkBoolNullable(1),_checkDoubleNullable(1),_checkIntNullable(1),_checkNumNullable(1),_checkObject(1),_checkStringNullable(1),_generalAsCheckImplementation(1),_generalIsTestImplementation(1),_generalTypeCheckImplementation(1),_instanceType(1),_isBool(1),_isInt(1),_isNum(1),_isObject(1),_isString(1),_isTop(1),findType(1),instanceType(1)],type=[impl:A,impl:C,inst:Closure,inst:JSBool,is:Class3,param:B]*/
method3(dynamic o, dynamic a, B b, dynamic c) {
if (o is! Class3) return;
o.method3(a, b, c);
}
/*member: Class4.:static=[Object.(0)]*/
class Class4 {
/*member: Class4.method4:static=[Rti._bind(1),Rti._eval(1),_arrayInstanceType(1),_asBoolNullable(1),_asDoubleNullable(1),_asIntNullable(1),_asNumNullable(1),_asObject(1),_asStringNullable(1),_asTop(1),_checkBoolNullable(1),_checkDoubleNullable(1),_checkIntNullable(1),_checkNumNullable(1),_checkObject(1),_checkStringNullable(1),_generalAsCheckImplementation(1),_generalIsTestImplementation(1),_generalTypeCheckImplementation(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:A,param:B,param:C]*/
method4(A a, {B b, C c}) {}
}
/*member: method4:dynamic=[Class4.method4(1,b,c)],static=[Rti._bind(1),Rti._eval(1),_arrayInstanceType(1),_asBoolNullable(1),_asDoubleNullable(1),_asIntNullable(1),_asNumNullable(1),_asObject(1),_asStringNullable(1),_asTop(1),_checkBoolNullable(1),_checkDoubleNullable(1),_checkIntNullable(1),_checkNumNullable(1),_checkObject(1),_checkStringNullable(1),_generalAsCheckImplementation(1),_generalIsTestImplementation(1),_generalTypeCheckImplementation(1),_instanceType(1),_isBool(1),_isInt(1),_isNum(1),_isObject(1),_isString(1),_isTop(1),findType(1),instanceType(1)],type=[impl:A,impl:C,inst:Closure,inst:JSBool,is:Class4,param:B]*/
method4(dynamic o, dynamic a, B b, dynamic c) {
if (o is! Class4) return;
o.method4(a, c: c, b: b);
}
/*member: Class5.:static=[Object.(0)]*/
class Class5<T1, T2> {
/*member: Class5.method5:
static=*,
type=[
inst:*,
param:C,
param:Class5.T1,
param:Class5.T2,
param:Object,
param:method5.S1,
param:method5.S2]
*/
method5<S1, S2>(T1 a, [T2 b, C c, S1 d, S2 e]) {}
}
/*member: method5:
dynamic=[Class5.method5<D,E>(5)],
static=*,
type=[
impl:A,
impl:D,
inst:*,
is:Class5<A,B>,
param:B,
param:C,
param:E]
*/
method5(dynamic o, dynamic a, B b, C c, dynamic d, E e) {
if (o is! Class5<A, B>) return;
o.method5<D, E>(a, b, c, d, e);
}
/*member: Class6.:static=[Object.(0)]*/
class Class6<T1, T2> {
/*member: Class6.method6:
static=*,
type=[
inst:*,
param:C,
param:Class6.T1,
param:Class6.T2,
param:Object,
param:method6.S1,
param:method6.S2]
*/
method6<S1, S2>(T1 a, {T2 b, C c, S1 d, S2 e}) {}
}
/*member: method6:
dynamic=[Class6.method6<D,E>(1,b,c,d,e)],
static=*,
type=[
impl:A,
impl:D,
inst:*,
is:Class6<A,B>,
param:B,
param:C,
param:E]
*/
method6(dynamic o, dynamic a, B b, C c, dynamic d, E e) {
if (o is! Class6<A, B>) return;
o.method6<D, E>(a, d: d, b: b, e: e, c: c);
}
/*member: Class7.:static=[Object.(0)]*/
class Class7 {
/*member: Class7.f:type=[inst:JSNull]*/
A Function(A) get f => null;
}
/*member: method7:dynamic=[Class7.f(1),call(1)],static=[Rti._bind(1),Rti._eval(1),_arrayInstanceType(1),_asBoolNullable(1),_asDoubleNullable(1),_asIntNullable(1),_asNumNullable(1),_asObject(1),_asStringNullable(1),_asTop(1),_checkBoolNullable(1),_checkDoubleNullable(1),_checkIntNullable(1),_checkNumNullable(1),_checkObject(1),_checkStringNullable(1),_generalAsCheckImplementation(1),_generalIsTestImplementation(1),_generalTypeCheckImplementation(1),_instanceType(1),_isBool(1),_isInt(1),_isNum(1),_isObject(1),_isString(1),_isTop(1),findType(1),instanceType(1)],type=[impl:A,inst:Closure,inst:JSBool,is:Class7]*/
method7(dynamic o, dynamic a) {
if (o is! Class7) return;
o.f(a);
}
/*member: F.:static=[Object.(0)]*/
class F<T> {
/*member: F.method:static=*,type=[inst:*,param:List<F.T>]*/
T method(List<T> list) => null;
/*member: F.field:static=*,type=[inst:*,param:F.T]*/
T field;
}
/*member: G.:static=[F.(0)]*/
class G extends F<int> {}
/*member: method8:
dynamic=[G.method(1)],
static=*,
type=[impl:List<int>,inst:*,is:G,param:Iterable<int>]
*/
method8(dynamic g, Iterable<int> iterable) {
if (g is! G) return null;
return g.method(iterable);
}
/*member: method9:dynamic=[G.field=],static=[Rti._bind(1),Rti._eval(1),_arrayInstanceType(1),_asBoolNullable(1),_asDoubleNullable(1),_asIntNullable(1),_asNumNullable(1),_asObject(1),_asStringNullable(1),_asTop(1),_checkBoolNullable(1),_checkDoubleNullable(1),_checkIntNullable(1),_checkNumNullable(1),_checkObject(1),_checkStringNullable(1),_generalAsCheckImplementation(1),_generalIsTestImplementation(1),_generalTypeCheckImplementation(1),_instanceType(1),_isBool(1),_isInt(1),_isNum(1),_isObject(1),_isString(1),_isTop(1),findType(1),instanceType(1)],type=[impl:int,inst:Closure,inst:JSBool,inst:JSNull,is:G,param:num]*/
method9(dynamic g, num value) {
if (g is! G) return null;
return g.field = value;
}
/*member: main:**/
main() {
method1(new Class1(), null);
method2(new Class2<A>(), null);
method3(new Class3(), null, null, null);
method4(new Class4(), null, null, null);
method5(new Class5<A, B>(), null, null, null, null, null);
method6(new Class6<A, B>(), null, null, null, null, null);
method7(new Class7(), null);
method8(new G(), null);
method9(new G(), null);
}