// 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 class Class { var field; } extension Extension on Class { readGetter() { return property; } writeSetterRequired(value) { property = value; } writeSetterOptional([value]) { property = value; } writeSetterNamed({value}) { property = value; } get tearOffGetterNoArgs => readGetter; get tearOffGetterRequired => writeSetterRequired; get tearOffGetterOptional => writeSetterOptional; get tearOffGetterNamed => writeSetterNamed; get property => this.field; set property(value) { this.field = value; } invocations(value) { readGetter(); writeSetterRequired(value); writeSetterOptional(); writeSetterOptional(value); writeSetterNamed(); writeSetterNamed(value: value); } tearOffs(value) { var tearOffNoArgs = readGetter; tearOffNoArgs(); var tearOffRequired = writeSetterRequired; tearOffRequired(value); var tearOffOptional = writeSetterOptional; tearOffOptional(); tearOffOptional(value); var tearOffNamed = writeSetterNamed; tearOffNamed(); tearOffNamed(value: value); } getterCalls(value) { tearOffGetterNoArgs(); tearOffGetterRequired(value); tearOffGetterOptional(); tearOffGetterOptional(value); tearOffGetterNamed(); tearOffGetterNamed(value: value); } } class GenericClass { T field; } extension GenericExtension on GenericClass { T readGetter() { return property; } writeSetterRequired(T value) { property = value; } writeSetterOptional([T value]) { property = value; } writeSetterNamed({T value}) { property = value; } genericWriteSetterRequired(S value) { property = value; } genericWriteSetterOptional([S value]) { property = value; } genericWriteSetterNamed({S value}) { property = value; } T get property => this.field; void set property(T value) { this.field = value; } get tearOffGetterNoArgs => readGetter; get tearOffGetterRequired => writeSetterRequired; get tearOffGetterOptional => writeSetterOptional; get tearOffGetterNamed => writeSetterNamed; get tearOffGetterGenericRequired => genericWriteSetterRequired; get tearOffGetterGenericOptional => genericWriteSetterOptional; get tearOffGetterGenericNamed => genericWriteSetterNamed; invocations(S value) { readGetter(); writeSetterRequired(value); writeSetterOptional(); writeSetterOptional(value); writeSetterNamed(); writeSetterNamed(value: value); genericWriteSetterRequired(value); genericWriteSetterRequired(value); genericWriteSetterRequired(value); genericWriteSetterOptional(); genericWriteSetterOptional(); genericWriteSetterOptional(); genericWriteSetterOptional(value); genericWriteSetterOptional(value); genericWriteSetterOptional(value); genericWriteSetterNamed(); genericWriteSetterNamed(); genericWriteSetterNamed(); genericWriteSetterNamed(value: value); genericWriteSetterNamed(value: value); genericWriteSetterNamed(value: value); } tearOffs(S value) { var tearOffNoArgs = readGetter; tearOffNoArgs(); var tearOffRequired = writeSetterRequired; tearOffRequired(value); var tearOffOptional = writeSetterOptional; tearOffOptional(); tearOffOptional(value); var tearOffNamed = writeSetterNamed; tearOffNamed(); tearOffNamed(value: value); var genericTearOffRequired = genericWriteSetterRequired; genericTearOffRequired(value); genericTearOffRequired(value); genericTearOffRequired(value); var genericTearOffOptional = genericWriteSetterOptional; genericTearOffOptional(); genericTearOffOptional(); genericTearOffOptional(); genericTearOffOptional(value); genericTearOffOptional(value); genericTearOffOptional(value); var genericTearOffNamed = genericWriteSetterNamed; genericTearOffNamed(); genericTearOffNamed(); genericTearOffNamed(); genericTearOffNamed(value: value); genericTearOffNamed(value: value); genericTearOffNamed(value: value); } getterCalls(S value) { tearOffGetterNoArgs(); tearOffGetterRequired(value); tearOffGetterOptional(); tearOffGetterOptional(value); tearOffGetterNamed(); tearOffGetterNamed(value: value); tearOffGetterGenericRequired(value); tearOffGetterGenericRequired(value); tearOffGetterGenericRequired(value); tearOffGetterGenericOptional(); tearOffGetterGenericOptional(); tearOffGetterGenericOptional(); tearOffGetterGenericOptional(value); tearOffGetterGenericOptional(value); tearOffGetterGenericOptional(value); tearOffGetterGenericNamed(); tearOffGetterGenericNamed(); tearOffGetterGenericNamed(); tearOffGetterGenericNamed(value: value); tearOffGetterGenericNamed(value: value); tearOffGetterGenericNamed(value: value); } } main() {}