| // 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 Foo { |
| int what; |
| |
| Foo() : what = 0; |
| Foo.publicNamed() : what = 1; |
| Foo._privateNamed() : what = 2; |
| |
| int publicMethod() { |
| return 42; |
| } |
| |
| int _privateMethod() { |
| return 43; |
| } |
| |
| static int publicStaticMethod() { |
| return 44; |
| } |
| |
| static int _privateStaticMethod() { |
| return 45; |
| } |
| |
| int publicField = 84; |
| int _privateField = 85; |
| static int publicStaticField = 86; |
| static int _privateStaticField = 87; |
| |
| int get publicGetter => -1; |
| int get _privateGetter => -2; |
| static int get publicStaticGetter => -3; |
| static int get _privateStaticGetter => -4; |
| |
| void set publicSetter(int x) {} |
| void set _privateSetter(int x) {} |
| static void set publicStaticSetter(int x) {} |
| static void set _privateStaticSetter(int x) {} |
| } |
| |
| extension PublicExtension on Foo { |
| int publicPublicExtensionMethod() { |
| return 20; |
| } |
| |
| int _publicPrivateExtensionMethod() { |
| return 21; |
| } |
| |
| static int publicPublicStaticExtensionMethod() { |
| return 22; |
| } |
| |
| static int _publicPrivateStaticExtensionMethod() { |
| return 23; |
| } |
| |
| static int publicPublicStaticExtensionField = 24; |
| static int _publicPrivateStaticExtensionField = 25; |
| |
| int get publicPublicExtensionGetter { |
| return 26; |
| } |
| |
| int get _publicPrivateExtensionGetter { |
| return 27; |
| } |
| |
| static int get publicPublicStaticExtensionGetter { |
| return 28; |
| } |
| |
| static int get _publicPrivateStaticExtensionGetter { |
| return 29; |
| } |
| |
| void set publicPublicExtensionSetter(int x) {} |
| |
| void set _publicPrivateExtensionSetter(int x) {} |
| |
| static void set publicPublicStaticExtensionSetter(int x) {} |
| |
| static void set _publicPrivateStaticExtensionSetter(int x) {} |
| } |
| |
| extension _PrivateExtension on Foo { |
| int privatePublicExtensionMethod() { |
| return 30; |
| } |
| |
| int _privatePrivateExtensionMethod() { |
| return 31; |
| } |
| |
| static int privatePublicStaticExtensionMethod() { |
| return 32; |
| } |
| |
| static int _privatePrivateStaticExtensionMethod() { |
| return 33; |
| } |
| |
| static int privatePublicStaticExtensionField = 34; |
| static int _privatePrivateStaticExtensionField = 35; |
| |
| int get privatePublicExtensionGetter { |
| return 36; |
| } |
| |
| int get _privatePrivateExtensionGetter { |
| return 37; |
| } |
| |
| static int get privatePublicStaticExtensionGetter { |
| return 38; |
| } |
| |
| static int get _privatePrivateStaticExtensionGetter { |
| return 39; |
| } |
| |
| void set privatePublicExtensionSetter(int x) {} |
| |
| void set _privatePrivateExtensionSetter(int x) {} |
| |
| static void set privatePublicStaticExtensionSetter(int x) {} |
| |
| static void set _privatePrivateStaticExtensionSetter(int x) {} |
| } |
| |
| int publicTopLevelMethod() { |
| return 50; |
| } |
| |
| int _privateTopLevelMethod() { |
| return 51; |
| } |
| |
| int publicTopLevelField = 52; |
| int _privateTopLevelField = 53; |
| |
| int get publicTopLevelGetter { |
| return 54; |
| } |
| |
| int get _privateTopLevelGetter { |
| return 55; |
| } |
| |
| void set publicTopLevelSetter(int x) {} |
| |
| void set _privateTopLevelSetter(int x) {} |
| |
| main() { |
| // Class constructors. |
| Foo foo = new Foo(); |
| assert(foo.what == 0); |
| foo = new Foo.publicNamed(); |
| assert(foo.what == 1); |
| foo = new Foo._privateNamed(); |
| assert(foo.what == 2); |
| |
| // Class methods. |
| assert(foo.publicMethod() == 42); |
| assert(foo._privateMethod() == 43); |
| assert(Foo.publicStaticMethod() == 44); |
| assert(Foo._privateStaticMethod() == 45); |
| |
| // Class fields. |
| assert(foo.publicField == 84); |
| foo.publicField = -84; |
| assert(foo.publicField == -84); |
| assert(foo._privateField == 85); |
| foo._privateField = -85; |
| assert(foo._privateField == -85); |
| assert(Foo.publicStaticField == 86); |
| Foo.publicStaticField = -86; |
| assert(Foo.publicStaticField == -86); |
| assert(Foo._privateStaticField == 87); |
| Foo._privateStaticField = -87; |
| assert(Foo._privateStaticField == -87); |
| |
| // Class getters. |
| assert(foo.publicGetter == -1); |
| assert(foo._privateGetter == -2); |
| assert(Foo.publicStaticGetter == -3); |
| assert(Foo._privateStaticGetter == -4); |
| |
| // Class setters. |
| foo.publicSetter = 42; |
| foo._privateSetter = 42; |
| Foo.publicStaticSetter = 42; |
| Foo._privateStaticSetter = 42; |
| |
| // Extension methods. |
| assert(foo.publicPublicExtensionMethod() == 20); |
| assert(foo._publicPrivateExtensionMethod() == 21); |
| assert(PublicExtension.publicPublicStaticExtensionMethod() == 22); |
| assert(PublicExtension._publicPrivateStaticExtensionMethod() == 23); |
| assert(foo.privatePublicExtensionMethod() == 30); |
| assert(foo._privatePrivateExtensionMethod() == 31); |
| assert(_PrivateExtension.privatePublicStaticExtensionMethod() == 32); |
| assert(_PrivateExtension._privatePrivateStaticExtensionMethod() == 33); |
| |
| // Extension fields. |
| assert(PublicExtension.publicPublicStaticExtensionField == 24); |
| PublicExtension.publicPublicStaticExtensionField = -24; |
| assert(PublicExtension.publicPublicStaticExtensionField == -24); |
| assert(PublicExtension._publicPrivateStaticExtensionField == 25); |
| PublicExtension._publicPrivateStaticExtensionField = -25; |
| assert(PublicExtension._publicPrivateStaticExtensionField == -25); |
| assert(_PrivateExtension.privatePublicStaticExtensionField == 34); |
| _PrivateExtension.privatePublicStaticExtensionField = -34; |
| assert(_PrivateExtension.privatePublicStaticExtensionField == -34); |
| assert(_PrivateExtension._privatePrivateStaticExtensionField == 35); |
| _PrivateExtension._privatePrivateStaticExtensionField = -35; |
| assert(_PrivateExtension._privatePrivateStaticExtensionField == -35); |
| |
| // Extension getters. |
| assert(foo.publicPublicExtensionGetter == 26); |
| assert(foo._publicPrivateExtensionGetter == 27); |
| assert(PublicExtension.publicPublicStaticExtensionGetter == 28); |
| assert(PublicExtension._publicPrivateStaticExtensionGetter == 29); |
| assert(foo.privatePublicExtensionGetter == 36); |
| assert(foo._privatePrivateExtensionGetter == 37); |
| assert(_PrivateExtension.privatePublicStaticExtensionGetter == 38); |
| assert(_PrivateExtension._privatePrivateStaticExtensionGetter == 39); |
| |
| // Extension setters. |
| foo.publicPublicExtensionSetter = 42; |
| foo._publicPrivateExtensionSetter = 42; |
| PublicExtension.publicPublicStaticExtensionSetter = 42; |
| PublicExtension._publicPrivateStaticExtensionSetter = 42; |
| foo.privatePublicExtensionSetter = 42; |
| foo._privatePrivateExtensionSetter = 42; |
| _PrivateExtension.privatePublicStaticExtensionSetter = 42; |
| _PrivateExtension._privatePrivateStaticExtensionSetter = 42; |
| |
| // Top-level methods. |
| assert(publicTopLevelMethod() == 50); |
| assert(_privateTopLevelMethod() == 51); |
| |
| // Top-level fields. |
| assert(publicTopLevelField == 52); |
| publicTopLevelField = -52; |
| assert(publicTopLevelField == -52); |
| assert(_privateTopLevelField == 53); |
| _privateTopLevelField = -53; |
| assert(_privateTopLevelField == -53); |
| |
| // Top-level getters. |
| assert(publicTopLevelGetter == 54); |
| assert(_privateTopLevelGetter == 55); |
| |
| // Top-level setters. |
| publicTopLevelSetter = 42; |
| _privateTopLevelSetter = 42; |
| } |