20faaa5d94
Change-Id: Ib18f554c1076f27a3f7c0df5a36410da41a1f467 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/148784 Reviewed-by: Paul Berry <paulberry@google.com> Reviewed-by: Sigmund Cherem <sigmund@google.com>
250 lines
3.6 KiB
Dart
250 lines
3.6 KiB
Dart
// 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();
|
|
}
|