Issue #412: tests for Static Members and Member Resolution (Static extension methods)
diff --git a/LanguageFeatures/Extension-methods/static_member_t01.dart b/LanguageFeatures/Extension-methods/static_member_t01.dart
new file mode 100644
index 0000000..3588941
--- /dev/null
+++ b/LanguageFeatures/Extension-methods/static_member_t01.dart
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2019, 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 Static member declarations in the extension declaration can be
+ * accessed the same way as static members of a class or mixin declaration: By
+ * prefixing with the extension's name.
+ * @description Check that static member can be accessed by prefixing with the
+ * extension's name
+ * @author iarkh@unipro.ru
+ */
+// SharedOptions=--enable-experiment=extension-methods
+
+import "../../Utils/expect.dart";
+
+extension MySmart on Object {
+  static int getId() => 128;
+  static Object smartHelper(Object o) { return o; }
+}
+
+main() {
+  Expect.equals(128, MySmart.getId());
+  Expect.equals("12345", MySmart.smartHelper("12345"));
+}
diff --git a/LanguageFeatures/Extension-methods/static_member_t02.dart b/LanguageFeatures/Extension-methods/static_member_t02.dart
new file mode 100644
index 0000000..53ef3c4
--- /dev/null
+++ b/LanguageFeatures/Extension-methods/static_member_t02.dart
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2019, 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 Static member declarations in the extension declaration can be
+ * accessed the same way as static members of a class or mixin declaration: By
+ * prefixing with the extension's name.
+ * @description Check that static member can be accessed by usual way
+ * @author iarkh@unipro.ru
+ */
+// SharedOptions=--enable-experiment=extension-methods
+
+import "../../Utils/expect.dart";
+
+extension MySmart on Object {
+  static Object smartHelper(Object o) { return o; }
+  smart() => smartHelper(this);
+}
+
+main() {
+  constant String str = "12345";
+  Expect.equals(str, MySmart.smart());
+  Expect.equals(str, str.smartHelper(str));
+  Expect.equals(str, str.smartHelper(str));
+  Expect.equals(str, MySmart(str).smartHelper(str));
+}
diff --git a/LanguageFeatures/Extension-methods/static_member_t03.dart b/LanguageFeatures/Extension-methods/static_member_t03.dart
new file mode 100644
index 0000000..079fb87
--- /dev/null
+++ b/LanguageFeatures/Extension-methods/static_member_t03.dart
@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) 2019, 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 Static member declarations in the extension declaration can be
+ * accessed the same way as static members of a class or mixin declaration: By
+ * prefixing with the extension's name.
+ * @description Check that non-static member can not be accessed by prefixing
+ * with the extension's name
+ * @compile-error
+ * @author iarkh@unipro.ru
+ */
+// SharedOptions=--enable-experiment=extension-methods
+
+extension MySmart on Object {
+  int getId() => 128;
+}
+
+main() {
+  MySmart.getId();
+}
diff --git a/LanguageFeatures/Extension-methods/static_member_t04.dart b/LanguageFeatures/Extension-methods/static_member_t04.dart
new file mode 100644
index 0000000..b7cfb45
--- /dev/null
+++ b/LanguageFeatures/Extension-methods/static_member_t04.dart
@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) 2019, 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 Static member declarations in the extension declaration can be
+ * accessed the same way as static members of a class or mixin declaration: By
+ * prefixing with the extension's name.
+ * @description Check that non-static member can not be accessed by prefixing
+ * with the extension's name
+ * @compile-error
+ * @author iarkh@unipro.ru
+ */
+// SharedOptions=--enable-experiment=extension-methods
+
+extension MySmart on Object {
+  void doNothing() {}
+}
+
+main() {
+  MySmart.doNothing();
+}