blob: a8b6f61a3393a33eee51549d478e15b78c8c9282 [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.
// @dart = 2.7
/*member: A.:invoke*/
class A {
/*member: A.method1:invoke*/
method1() {}
method2() {}
/*member: A.method4:invoke*/
method4() {}
/*member: A.getter:read*/
get getter => 42;
set setter(_) {}
}
/*member: B.:invoke*/
class B {
method1() {}
method2() {}
/*member: B.method5:invoke*/
method5() {}
get getter => 42;
/*member: B.setter=:write*/
set setter(_) {}
}
/*member: C.:invoke*/
class C extends A {
/*member: C.method1:invoke*/
@override
method1() {}
/*member: B.method2:invoke*/
@override
method2() {}
@override
method4() {}
/*member: C.getter:read*/
@override
get getter => 42;
@override
set setter(_) {}
}
/*member: D.:invoke*/
class D implements B {
@override
method1() {}
/*member: D.method2:invoke*/
@override
method2() {}
@override
method5() {}
@override
get getter => 42;
/*member: D.setter=:write*/
@override
set setter(_) {}
}
class E implements A {
@override
method1() {}
@override
method2() {}
@override
method4() {}
@override
get getter => 42;
@override
set setter(_) {}
}
class F extends B {
@override
method1() {}
@override
method2() {}
@override
method5() {}
@override
get getter => 42;
@override
set setter(_) {}
}
class G {
/*member: G.method1:invoke*/
method1() {}
method2() {}
method4() {}
/*member: G.getter:read*/
get getter => 42;
set setter(_) {}
}
/*member: H.:invoke*/
class H extends Object with G implements A {}
/*member: I.:invoke*/
class I {
/*member: I.method1:invoke*/
method1() {}
method2() {}
method4() {}
/*member: I.getter:read*/
get getter => 42;
set setter(_) {}
}
/*member: J.:invoke*/
class J extends I implements A {}
class K {
/*member: K.method1:invoke*/
method1() {}
method2() {}
/*member: K.getter:read*/
get getter => 42;
set setter(_) {}
}
class L = Object with K;
class L2 = Object with L;
/*member: M.:invoke*/
class M extends L {}
/*member: M2.:invoke*/
class M2 extends L2 {}
/*member: N.:invoke*/
class N {
method1() {}
get getter => 42;
set setter(_) {}
}
abstract class O extends N {}
/*member: P.:invoke*/
class P implements O {
/*member: P.method1:invoke*/
@override
method1() {}
/*member: P.getter:read*/
@override
get getter => 42;
/*member: P.setter=:write*/
@override
set setter(_) {}
}
/*member: Q.:invoke*/
class Q {
/*member: Q.method3:invoke*/
method3() {}
}
/*member: R.:invoke*/
class R extends Q {}
/*member: Class1a.:invoke*/
class Class1a {
/*member: Class1a.call:invoke*/
call(a, b, c) {} // Call structure only used in Class1a and Class2b.
}
/*member: Class1b.:invoke*/
class Class1b {
call(a, b, c) {}
}
/*member: Class2.:invoke*/
class Class2 {
/*member: Class2.c:init,invoke,read=static*/
Class1a c;
}
/*member: main:invoke*/
main() {
method1();
method2();
}
/*member: method1:invoke*/
@pragma('dart2js:disableFinal')
method1() {
A a = new A();
B b = new B();
a.method1();
a.getter;
b.method2();
b.setter = 42;
new C();
new D();
new H();
new J();
new M().method1();
new M2().getter;
new N();
O o = new P();
o.method1();
o.getter;
o.setter = 42;
R r;
r.method3();
r = new R(); // Create R after call.
new Class1a();
new Class1b();
new Class2().c(0, 1, 2);
}
/*member: method2:invoke*/
method2() {
A a = new A();
B b = new B();
a.method4();
b.method5();
}