// 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, async.dart.FutureExtensions]*/ 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 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 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 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 {} /*class: B2: builder-name=B2, builder-onType=B1, 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, extension-type-params=[T] */ extension B2 on B1 { /*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 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 method2(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() {}