diff --git a/tests/language/metadata/metadata_location_part.dart b/tests/language/metadata/metadata_location_part.dart
new file mode 100644
index 0000000..ae1bb39
--- /dev/null
+++ b/tests/language/metadata/metadata_location_part.dart
@@ -0,0 +1,2 @@
+@m
+part of 'metadata_location_test.dart';
diff --git a/tests/language/metadata/metadata_location_test.dart b/tests/language/metadata/metadata_location_test.dart
new file mode 100644
index 0000000..805c06d
--- /dev/null
+++ b/tests/language/metadata/metadata_location_test.dart
@@ -0,0 +1,122 @@
+// 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
+  int get prop => 0;
+
+  @m
+  set prop(int _) {}
+
+  @m
+  bool operator ==(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
+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
+enum E {
+  @m
+  one,
+  @m
+  two,
+}
+
+void f<@m X>() {}
+
+class D<@m X> {}
+
+@m
+typedef void F<@m X>();
+
+void main() {
+  @m
+  var x;
+
+  @m
+  void f() {}
+
+  for (@m
+  int i = 0;
+      i < 1;
+      i++) {}
+  for (@m int i in []) {}
+}
diff --git a/tools/VERSION b/tools/VERSION
index 7ac5eb9..f603700 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 11
 PATCH 0
-PRERELEASE 227
+PRERELEASE 228
 PRERELEASE_PATCH 0
\ No newline at end of file
