blob: 3b3f248f62f0f31d87fdd67990e24bb56d5e3a55 [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.9
/*library: scope=[A2,B2]*/
class A1 {}
/*class: A2:
builder-name=A2,
builder-onType=A1,
extension-members=[
method1=A2|method1,
method2=A2|method2,
method3=A2|method3,
method4=A2|method4,
tearoff method1=A2|get#method1,
tearoff method2=A2|get#method2,
tearoff method3=A2|get#method3,
tearoff method4=A2|get#method4],
extension-name=A2,
extension-onType=A1
*/
extension A2 on A1 {
/*member: A2|method1:
builder-name=method1,
builder-params=[#this],
member-name=A2|method1,
member-params=[#this]
*/
A1 method1() {
return this;
}
/*member: A2|get#method1:
builder-name=method1,
builder-params=[#this],
member-name=A2|get#method1,
member-params=[#this]
*/
/*member: A2|method2:
builder-name=method2,
builder-params=[#this,o],
builder-type-params=[T],
member-name=A2|method2,
member-params=[#this,o],
member-type-params=[T]
*/
A1 method2<T>(T o) {
print(o);
return this;
}
/*member: A2|get#method2:
builder-name=method2,
builder-params=[#this,o],
builder-type-params=[T],
member-name=A2|get#method2,
member-params=[#this]
*/
/*member: A2|method3:
builder-name=method3,
builder-params=[#this],
builder-pos-params=[o],
builder-type-params=[T],
member-name=A2|method3,
member-params=[#this],
member-pos-params=[o],
member-type-params=[T]
*/
A1 method3<T>([T o]) {
print(o);
return this;
}
/*member: A2|get#method3:
builder-name=method3,
builder-params=[#this],
builder-pos-params=[o],
builder-type-params=[T],
member-name=A2|get#method3,
member-params=[#this]
*/
/*member: A2|method4:
builder-name=method4,
builder-params=[#this],
builder-named-params=[o],
builder-type-params=[T],
member-name=A2|method4,
member-params=[#this],
member-named-params=[o],
member-type-params=[T]
*/
A1 method4<T>({T o}) {
print(o);
return this;
}
/*member: A2|get#method4:
builder-name=method4,
builder-named-params=[o],
builder-params=[#this],
builder-type-params=[T],
member-name=A2|get#method4,
member-params=[#this]
*/
}
class B1<T> {}
/*class: B2:
builder-name=B2,
builder-onType=B1<T>,
builder-type-params=[T],
extension-members=[
method1=B2|method1,
method2=B2|method2,
tearoff method1=B2|get#method1,
tearoff method2=B2|get#method2],
extension-name=B2,
extension-onType=B1<T>,
extension-type-params=[T]
*/
extension B2<T> on B1<T> {
/*member: B2|method1:
builder-name=method1,
builder-params=[#this],
builder-type-params=[T],
member-name=B2|method1,
member-params=[#this],
member-type-params=[T]
*/
B1<T> method1() {
return this;
}
/*member: B2|get#method1:
builder-name=method1,
builder-params=[#this],
builder-type-params=[T],
member-name=B2|get#method1,
member-params=[#this],
member-type-params=[T]
*/
/*member: B2|method2:
builder-name=method2,
builder-params=[#this,o],
builder-type-params=[T,S],
member-name=B2|method2,
member-params=[#this,o],
member-type-params=[T,S]
*/
B1<T> method2<S>(S o) {
print(o);
return this;
}
/*member: B2|get#method2:
builder-name=method2,
builder-params=[#this,o],
builder-type-params=[T,S],
member-name=B2|get#method2,
member-params=[#this],
member-type-params=[T]
*/
}
main() {}