| // 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(); |
| } |