Fixes #523. Move tests that use mirrors to API tests. Add metadata tests without mirrors
diff --git a/Language/Metadata/before_export_lib1.dart b/Language/Metadata/before_export_lib1.dart
index 1a6dd3c..c8a8d9b 100644
--- a/Language/Metadata/before_export_lib1.dart
+++ b/Language/Metadata/before_export_lib1.dart
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  */
diff --git a/Language/Metadata/before_export_lib2.dart b/Language/Metadata/before_export_lib2.dart
index eac5b07..c4cb627 100644
--- a/Language/Metadata/before_export_lib2.dart
+++ b/Language/Metadata/before_export_lib2.dart
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  */
diff --git a/Language/Metadata/before_export_t01.dart b/Language/Metadata/before_export_t01.dart
index e935e61..6fbca3c 100644
--- a/Language/Metadata/before_export_t01.dart
+++ b/Language/Metadata/before_export_t01.dart
@@ -1,23 +1,16 @@
 /*
- * Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  */
 /**
  * @assertion Metadata can appear before  ...  export ...
  * @description Check that metadata is allowed before export directive
- * @author a.semenov@unipro.ru
+ * @author sgrekhov@unipro.ru
  */
-import 'dart:mirrors';
-import '../../Utils/expect.dart';
 
 import 'before_export_lib1.dart';
 
 main() {
-  Symbol libraryName = MirrorSystem.getSymbol('before_export_lib1');
-  LibraryMirror libraryMirror = currentMirrorSystem().findLibrary(libraryName);
-  LibraryDependencyMirror exportMirror = libraryMirror.libraryDependencies
-                                               .firstWhere( (e) => e.isExport );
-  Expect.equals('before_export_lib1.A',
-      MirrorSystem.getName(exportMirror.metadata[0].type.qualifiedName));
+  new B();
 }
diff --git a/Language/Metadata/before_part_directive_lib.dart b/Language/Metadata/before_part_directive_lib.dart
new file mode 100644
index 0000000..957f77c
--- /dev/null
+++ b/Language/Metadata/before_part_directive_lib.dart
@@ -0,0 +1,10 @@
+/*
+ * 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.
+ */
+
+library before_part_directive_lib;
+@Deprecated("")
+part "before_part_directive_lib_part.dart";
+
diff --git a/Language/Metadata/before_part_directive_lib_part.dart b/Language/Metadata/before_part_directive_lib_part.dart
new file mode 100644
index 0000000..0079e95
--- /dev/null
+++ b/Language/Metadata/before_part_directive_lib_part.dart
@@ -0,0 +1,10 @@
+/*
+ * 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.
+ */
+
+part of before_part_directive_lib;
+
+class A {}
+
diff --git a/Language/Metadata/before_part_directive_t01.dart b/Language/Metadata/before_part_directive_t01.dart
index 8323fb6..cfdd57a 100644
--- a/Language/Metadata/before_part_directive_t01.dart
+++ b/Language/Metadata/before_part_directive_t01.dart
@@ -1,16 +1,16 @@
 /*
- * Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
+ * Copyright (c) 20120, 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.
  */
 /**
- * @assertion Metadata can appear before  ...   part directive ...
+ * @assertion Metadata can appear before  ...  part directive ...
  * @description Check that metadata is allowed before part directive
- * @author a.semenov@unipro.ru
+ * @author sgrekhov@unipro.ru
  */
-import 'before_part_directive_lib1.dart';
+
+import 'before_part_directive_lib.dart';
 
 main() {
-  // Unfortunately, there is no way to obtain part directive metadata.
-  // Just make sure the syntax parser allows metadata before part directive
+  new A();
 }
diff --git a/Language/Metadata/before_part_header_lib1_p01.dart b/Language/Metadata/before_part_header_lib1_p01.dart
index 25b03ae..96f5059 100644
--- a/Language/Metadata/before_part_header_lib1_p01.dart
+++ b/Language/Metadata/before_part_header_lib1_p01.dart
@@ -6,3 +6,5 @@
 
 @Deprecated('before_lib2_p01')
 part of before_lib2;
+
+int i = 0;
diff --git a/Language/Metadata/before_part_header_t01.dart b/Language/Metadata/before_part_header_t01.dart
index 467b107..9dd4b8e 100644
--- a/Language/Metadata/before_part_header_t01.dart
+++ b/Language/Metadata/before_part_header_t01.dart
@@ -13,5 +13,5 @@
 import 'before_part_header_lib1.dart';
 
 main() {
-// There is no way to obtain the part header metadata via reflection
+  i = 42;
 }
diff --git a/Language/Metadata/places_lib.dart b/Language/Metadata/places_lib.dart
new file mode 100644
index 0000000..764f14a
--- /dev/null
+++ b/Language/Metadata/places_lib.dart
@@ -0,0 +1,8 @@
+/*
+ * 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.
+ */
+
+@Deprecated('places_lib')
+library places_lib;
\ No newline at end of file
diff --git a/Language/Metadata/places_t01.dart b/Language/Metadata/places_t01.dart
new file mode 100644
index 0000000..5ae68bd
--- /dev/null
+++ b/Language/Metadata/places_t01.dart
@@ -0,0 +1,64 @@
+/*
+ * 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.
+ */
+/**
+ * @assertion
+ *  Metadata can appear before a library, part header, class, typedef, type
+ *  parameter, constructor, factory, function, parameter, or variable
+ *  declaration, and before an import, export, or part directive.
+ *
+ * @description Check that metadata can appear before a library, class, typedef,
+ * type parameter, constructor, factory, function, parameter, or variable
+ * declaration
+ * @author sgekhov@unipro.ru
+ */
+
+import "places_lib.dart";
+
+class A {
+    const A();
+}
+
+void foo() {}
+
+// class
+@A()
+class C1 {}
+
+// typedef
+@A()
+typedef void Foo();
+
+// type parameter
+class C2<@A() T> {}
+void bar<@A() T>() {}
+
+// constructor
+class C3 {
+  @A() C3() {}
+}
+
+// factory
+class C4 {
+  factory C4() => new C4();
+}
+
+// function
+@A() int test1() => 42;
+
+// parameter
+int test2(@A() int x) => x;
+
+// variable declaration
+@A() int x = 42;
+
+main() {
+  new C1();
+  Foo f = foo;
+  bar<int>();
+  new C3();
+  test1();
+  test2(42);
+}
diff --git a/Language/Metadata/before_class_t01.dart b/LibTest/mirrors/before_class_t01.dart
similarity index 100%
rename from Language/Metadata/before_class_t01.dart
rename to LibTest/mirrors/before_class_t01.dart
diff --git a/Language/Metadata/before_ctor_t01.dart b/LibTest/mirrors/before_ctor_t01.dart
similarity index 100%
rename from Language/Metadata/before_ctor_t01.dart
rename to LibTest/mirrors/before_ctor_t01.dart
diff --git a/Language/Metadata/before_ctor_t02.dart b/LibTest/mirrors/before_ctor_t02.dart
similarity index 100%
rename from Language/Metadata/before_ctor_t02.dart
rename to LibTest/mirrors/before_ctor_t02.dart
diff --git a/Language/Metadata/before_factory_t01.dart b/LibTest/mirrors/before_factory_t01.dart
similarity index 100%
rename from Language/Metadata/before_factory_t01.dart
rename to LibTest/mirrors/before_factory_t01.dart
diff --git a/Language/Metadata/before_function_t01.dart b/LibTest/mirrors/before_function_t01.dart
similarity index 100%
rename from Language/Metadata/before_function_t01.dart
rename to LibTest/mirrors/before_function_t01.dart
diff --git a/Language/Metadata/before_function_t02.dart b/LibTest/mirrors/before_function_t02.dart
similarity index 100%
rename from Language/Metadata/before_function_t02.dart
rename to LibTest/mirrors/before_function_t02.dart
diff --git a/Language/Metadata/before_function_t03.dart b/LibTest/mirrors/before_function_t03.dart
similarity index 100%
rename from Language/Metadata/before_function_t03.dart
rename to LibTest/mirrors/before_function_t03.dart
diff --git a/Language/Metadata/before_function_t04.dart b/LibTest/mirrors/before_function_t04.dart
similarity index 100%
rename from Language/Metadata/before_function_t04.dart
rename to LibTest/mirrors/before_function_t04.dart
diff --git a/Language/Metadata/before_function_t05.dart b/LibTest/mirrors/before_function_t05.dart
similarity index 100%
rename from Language/Metadata/before_function_t05.dart
rename to LibTest/mirrors/before_function_t05.dart
diff --git a/Language/Metadata/before_function_t06.dart b/LibTest/mirrors/before_function_t06.dart
similarity index 100%
rename from Language/Metadata/before_function_t06.dart
rename to LibTest/mirrors/before_function_t06.dart
diff --git a/Language/Metadata/before_function_t07.dart b/LibTest/mirrors/before_function_t07.dart
similarity index 100%
rename from Language/Metadata/before_function_t07.dart
rename to LibTest/mirrors/before_function_t07.dart
diff --git a/Language/Metadata/before_import_lib1.dart b/LibTest/mirrors/before_import_lib1.dart
similarity index 100%
rename from Language/Metadata/before_import_lib1.dart
rename to LibTest/mirrors/before_import_lib1.dart
diff --git a/Language/Metadata/before_import_lib2.dart b/LibTest/mirrors/before_import_lib2.dart
similarity index 100%
rename from Language/Metadata/before_import_lib2.dart
rename to LibTest/mirrors/before_import_lib2.dart
diff --git a/Language/Metadata/before_import_t01.dart b/LibTest/mirrors/before_import_t01.dart
similarity index 100%
rename from Language/Metadata/before_import_t01.dart
rename to LibTest/mirrors/before_import_t01.dart
diff --git a/Language/Metadata/before_library_lib1.dart b/LibTest/mirrors/before_library_lib1.dart
similarity index 100%
rename from Language/Metadata/before_library_lib1.dart
rename to LibTest/mirrors/before_library_lib1.dart
diff --git a/Language/Metadata/before_library_t01.dart b/LibTest/mirrors/before_library_t01.dart
similarity index 100%
rename from Language/Metadata/before_library_t01.dart
rename to LibTest/mirrors/before_library_t01.dart
diff --git a/Language/Metadata/before_param_t01.dart b/LibTest/mirrors/before_param_t01.dart
similarity index 100%
rename from Language/Metadata/before_param_t01.dart
rename to LibTest/mirrors/before_param_t01.dart
diff --git a/Language/Metadata/before_param_t02.dart b/LibTest/mirrors/before_param_t02.dart
similarity index 100%
rename from Language/Metadata/before_param_t02.dart
rename to LibTest/mirrors/before_param_t02.dart
diff --git a/Language/Metadata/before_param_t03.dart b/LibTest/mirrors/before_param_t03.dart
similarity index 100%
rename from Language/Metadata/before_param_t03.dart
rename to LibTest/mirrors/before_param_t03.dart
diff --git a/Language/Metadata/before_param_t04.dart b/LibTest/mirrors/before_param_t04.dart
similarity index 100%
rename from Language/Metadata/before_param_t04.dart
rename to LibTest/mirrors/before_param_t04.dart
diff --git a/Language/Metadata/before_param_t05.dart b/LibTest/mirrors/before_param_t05.dart
similarity index 100%
rename from Language/Metadata/before_param_t05.dart
rename to LibTest/mirrors/before_param_t05.dart
diff --git a/Language/Metadata/before_param_t06.dart b/LibTest/mirrors/before_param_t06.dart
similarity index 100%
rename from Language/Metadata/before_param_t06.dart
rename to LibTest/mirrors/before_param_t06.dart
diff --git a/Language/Metadata/before_param_t07.dart b/LibTest/mirrors/before_param_t07.dart
similarity index 100%
rename from Language/Metadata/before_param_t07.dart
rename to LibTest/mirrors/before_param_t07.dart
diff --git a/Language/Metadata/before_param_t08.dart b/LibTest/mirrors/before_param_t08.dart
similarity index 100%
rename from Language/Metadata/before_param_t08.dart
rename to LibTest/mirrors/before_param_t08.dart
diff --git a/Language/Metadata/before_param_t09.dart b/LibTest/mirrors/before_param_t09.dart
similarity index 100%
rename from Language/Metadata/before_param_t09.dart
rename to LibTest/mirrors/before_param_t09.dart
diff --git a/Language/Metadata/before_part_directive_lib1.dart b/LibTest/mirrors/before_part_directive_lib1.dart
similarity index 100%
rename from Language/Metadata/before_part_directive_lib1.dart
rename to LibTest/mirrors/before_part_directive_lib1.dart
diff --git a/Language/Metadata/before_part_directive_lib1_p1.dart b/LibTest/mirrors/before_part_directive_lib1_p1.dart
similarity index 100%
rename from Language/Metadata/before_part_directive_lib1_p1.dart
rename to LibTest/mirrors/before_part_directive_lib1_p1.dart
diff --git a/Language/Metadata/before_type_param_t01.dart b/LibTest/mirrors/before_type_param_t01.dart
similarity index 100%
rename from Language/Metadata/before_type_param_t01.dart
rename to LibTest/mirrors/before_type_param_t01.dart
diff --git a/Language/Metadata/before_typedef_t01.dart b/LibTest/mirrors/before_typedef_t01.dart
similarity index 100%
rename from Language/Metadata/before_typedef_t01.dart
rename to LibTest/mirrors/before_typedef_t01.dart
diff --git a/Language/Metadata/before_variable_t01.dart b/LibTest/mirrors/before_variable_t01.dart
similarity index 100%
rename from Language/Metadata/before_variable_t01.dart
rename to LibTest/mirrors/before_variable_t01.dart
diff --git a/Language/Metadata/before_variable_t02.dart b/LibTest/mirrors/before_variable_t02.dart
similarity index 100%
rename from Language/Metadata/before_variable_t02.dart
rename to LibTest/mirrors/before_variable_t02.dart
diff --git a/Language/Metadata/compilation_t01.dart b/LibTest/mirrors/compilation_t01.dart
similarity index 100%
rename from Language/Metadata/compilation_t01.dart
rename to LibTest/mirrors/compilation_t01.dart
diff --git a/Language/Metadata/compilation_t02.dart b/LibTest/mirrors/compilation_t02.dart
similarity index 100%
rename from Language/Metadata/compilation_t02.dart
rename to LibTest/mirrors/compilation_t02.dart
diff --git a/Language/Metadata/compilation_t03.dart b/LibTest/mirrors/compilation_t03.dart
similarity index 100%
rename from Language/Metadata/compilation_t03.dart
rename to LibTest/mirrors/compilation_t03.dart
diff --git a/Language/Metadata/compilation_t04.dart b/LibTest/mirrors/compilation_t04.dart
similarity index 100%
rename from Language/Metadata/compilation_t04.dart
rename to LibTest/mirrors/compilation_t04.dart
diff --git a/Language/Metadata/compilation_t05.dart b/LibTest/mirrors/compilation_t05.dart
similarity index 100%
rename from Language/Metadata/compilation_t05.dart
rename to LibTest/mirrors/compilation_t05.dart
diff --git a/Language/Metadata/compilation_t06.dart b/LibTest/mirrors/compilation_t06.dart
similarity index 100%
rename from Language/Metadata/compilation_t06.dart
rename to LibTest/mirrors/compilation_t06.dart
diff --git a/Language/Metadata/compilation_t07.dart b/LibTest/mirrors/compilation_t07.dart
similarity index 100%
rename from Language/Metadata/compilation_t07.dart
rename to LibTest/mirrors/compilation_t07.dart
diff --git a/Language/Metadata/compilation_t08.dart b/LibTest/mirrors/compilation_t08.dart
similarity index 100%
rename from Language/Metadata/compilation_t08.dart
rename to LibTest/mirrors/compilation_t08.dart
diff --git a/Language/Metadata/compilation_t09.dart b/LibTest/mirrors/compilation_t09.dart
similarity index 100%
rename from Language/Metadata/compilation_t09.dart
rename to LibTest/mirrors/compilation_t09.dart
diff --git a/Language/Metadata/compilation_t10.dart b/LibTest/mirrors/compilation_t10.dart
similarity index 100%
rename from Language/Metadata/compilation_t10.dart
rename to LibTest/mirrors/compilation_t10.dart
diff --git a/Language/Metadata/compilation_t11.dart b/LibTest/mirrors/compilation_t11.dart
similarity index 100%
rename from Language/Metadata/compilation_t11.dart
rename to LibTest/mirrors/compilation_t11.dart