| // 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. |
| |
| // Test that metadata can be located everywhere the grammar specifies that |
| // it can occur, with a few variants especially for parameter locations. |
| |
| @m |
| library metadata.location.test; |
| |
| @m |
| import 'dart:async'; |
| |
| @m |
| export 'dart:async'; |
| |
| @m |
| part 'metadata_location_part.dart'; |
| |
| @m |
| const m = 0; |
| |
| @m |
| void f1(@m p1, @m int p2, [@m p3, @m int? p4]) {} |
| |
| @m |
| void f2({@m p1, @m int? p2}) {} |
| |
| @m |
| void f3(@m p1(), @m int p2()) {} |
| |
| @m |
| class C { |
| @m |
| var x, y, z, w; |
| |
| @m |
| covariant var u, v; |
| |
| @m |
| C(@m this.x, @m int this.y, |
| {@m this.z, @m int? this.w, @m this.u()?, @m int this.v()?}); |
| |
| @m |
| void f1(@m p1, @m int p2, [@m p3, @m int? p4]) {} |
| |
| @m |
| void f2({@m p1, @m int? p2}) {} |
| |
| @m |
| void f3(@m covariant p1, @m covariant int p2, |
| [@m covariant p3, @m covariant int? p4]) {} |
| |
| @m |
| void f4({@m covariant p1, @m covariant int? p2}) {} |
| |
| @m |
| static void f1s(@m p1, @m int p2, [@m p3, @m int? p4]) {} |
| |
| @m |
| static void f2s({@m p1, @m int? p2}) {} |
| |
| @m |
| int get prop => 0; |
| |
| @m |
| set prop(@m int _) {} |
| |
| @m |
| static int get staticProp => 0; |
| |
| @m |
| static set staticProp(@m int _) {} |
| |
| @m |
| bool operator ==(@m other) => true; |
| } |
| |
| @m |
| mixin M { |
| @m |
| var x, y, z, w, u, v; |
| |
| @m |
| void f1(@m p1, @m int p2, [@m p3, @m int p4 = 0]) {} |
| |
| @m |
| void f2({@m p1, @m int p2 = 0}) {} |
| |
| @m |
| void f3(@m covariant p1, @m covariant int p2, |
| [@m covariant p3, @m covariant int p4 = 0]) {} |
| |
| @m |
| void f4({@m covariant p1, @m covariant int p2 = 0}) {} |
| |
| @m |
| static void f1s(@m p1, @m int p2, [@m p3, @m int? p4]) {} |
| |
| @m |
| static void f2s({@m p1, @m int? p2}) {} |
| |
| @m |
| int get prop => 0; |
| |
| @m |
| set prop(@m int _) {} |
| |
| @m |
| static int get staticProp => 0; |
| |
| @m |
| static set staticProp(@m int _) {} |
| |
| @m |
| bool operator ==(@m other) => true; |
| } |
| |
| @m |
| extension Extension on int { |
| @m |
| void f1(@m p1, @m int p2, [@m p3, @m int p4 = 0]) {} |
| |
| @m |
| void f2({@m p1, @m int p2 = 0}) {} |
| |
| @m |
| static void f1s(@m p1, @m int p2, [@m p3, @m int? p4]) {} |
| |
| @m |
| static void f2s({@m p1, @m int? p2}) {} |
| |
| @m |
| int get prop => 0; |
| |
| @m |
| set prop(@m int _) {} |
| |
| @m |
| static int get staticProp => 0; |
| |
| @m |
| static set staticProp(@m int _) {} |
| } |
| |
| @m |
| enum E { |
| @m |
| one, |
| @m |
| two, |
| } |
| |
| void f<@m X>() {} |
| |
| class D<@m X> {} |
| |
| @m |
| typedef void F1<@m X>(); |
| |
| @m |
| typedef F2<@m X> = void Function(); |
| |
| @m |
| typedef F3 = void Function<@m X, @m Y extends X>(@m X, {@m List<X> name}); |
| |
| @m |
| typedef F4 = F3 Function<@m X>([@m X, @m int]); |
| |
| @m |
| const int Function<@m X extends Y, @m Y>(@m void, [@m List<X>])? c = null; |
| |
| @m |
| void main() { |
| @m |
| var x; |
| |
| @m |
| void f() {} |
| |
| for (@m |
| int i = 0; |
| i < 1; |
| i++) {} |
| for (@m int i in []) {} |
| } |