mirror of
https://github.com/dart-lang/sdk
synced 2024-09-18 21:31:20 +00:00
083dd87675
This CL extends language/metadata/metadata_location_test.dart with a couple of extra test cases, covering the situation where the metadata occurs on a type paramater or value parameter of a function type. Change-Id: I9b225e8c3d72aa5ddd8893526e65ab4d1b5ab2a9 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/187922 Reviewed-by: Lasse R.H. Nielsen <lrn@google.com> Commit-Queue: Erik Ernst <eernst@google.com>
187 lines
2.8 KiB
Dart
187 lines
2.8 KiB
Dart
// 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 []) {}
|
|
}
|