| // Copyright (c) 2020, 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. |
| |
| // Checks for static errors related to parameters for constructors and |
| // factories. |
| |
| @JS() |
| library js_constructor_parameters_static_test; |
| |
| import 'package:js/js.dart'; |
| import 'package:expect/expect.dart'; |
| |
| @JS() |
| class Foo { |
| external Foo({int? a}); |
| // ^ |
| // [web] Named parameters for JS interop functions are only allowed in a factory constructor of an @anonymous JS class. |
| external factory Foo.fooFactory({int? a}); |
| // ^ |
| // [web] Named parameters for JS interop functions are only allowed in a factory constructor of an @anonymous JS class. |
| } |
| |
| @JS() |
| @anonymous |
| class Bar { |
| external Bar({int? a}); |
| // ^ |
| // [web] Named parameters for JS interop functions are only allowed in a factory constructor of an @anonymous JS class. |
| |
| // Factories of an anonymous class can only contain named parameters. |
| external factory Bar.barFactoryPositional(int? a); |
| // ^ |
| // [web] Factory constructors for @anonymous JS interop classes should not contain any positional parameters. |
| external factory Bar.barFactoryOptional([int? a]); |
| // ^ |
| // [web] Factory constructors for @anonymous JS interop classes should not contain any positional parameters. |
| external factory Bar.barFactoryMixedOptional(int? a, [int? b]); |
| // ^ |
| // [web] Factory constructors for @anonymous JS interop classes should not contain any positional parameters. |
| external factory Bar.barFactoryMixedNamed(int? a, {int? b}); |
| // ^ |
| // [web] Factory constructors for @anonymous JS interop classes should not contain any positional parameters. |
| |
| // Named parameters are okay only for factories of an anonymous class. |
| external factory Bar.barFactoryNamed({int? a}); |
| } |
| |
| @JS() |
| abstract class Baz { |
| external Baz({int? a}); |
| // ^ |
| // [web] Named parameters for JS interop functions are only allowed in a factory constructor of an @anonymous JS class. |
| external factory Baz.bazFactory({int? a}); |
| // ^ |
| // [web] Named parameters for JS interop functions are only allowed in a factory constructor of an @anonymous JS class. |
| } |
| |
| main() {} |