Implicit onversions tests added
diff --git a/LanguageFeatures/nnbd/implicit_conversions_A01_t01.dart b/LanguageFeatures/nnbd/implicit_conversions_A01_t01.dart
new file mode 100644
index 0000000..904a004
--- /dev/null
+++ b/LanguageFeatures/nnbd/implicit_conversions_A01_t01.dart
@@ -0,0 +1,32 @@
+/*
+ * 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 The implicit conversion of integer literals to double literals is
+ * performed when the context type is double or double?
+ *
+ * @description Check that the implicit conversion of integer literals to double
+ * literals is performed when the context type is double or double?
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+import "../../Utils/expect.dart";
+test1(double d) {
+  Expect.equals(4.0, d);
+}
+test2(double? d) {
+  Expect.equals(1.0, d);
+}
+
+main() {
+  double d1 = 3;
+  double? d2 = 1;
+  Expect.equals(3.0, d1);
+  Expect.equals(1.0, d2);
+
+  test1(4);
+  test2(1);
+}
diff --git a/LanguageFeatures/nnbd/implicit_conversions_A02_t01.dart b/LanguageFeatures/nnbd/implicit_conversions_A02_t01.dart
new file mode 100644
index 0000000..90553b8
--- /dev/null
+++ b/LanguageFeatures/nnbd/implicit_conversions_A02_t01.dart
@@ -0,0 +1,38 @@
+/*
+ * 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 The implicit tear-off conversion which converts uses of instances
+ * of classes with call methods to the tear-off of their .call method when the
+ * context type is a function type is performed when the context type is a
+ * function type, or the nullable version of a context type.
+ *
+ * @description Check that the implicit tear-off conversion which converts uses
+ * of instances of classes with call methods to the tear-off of their .call
+ * method when the context type is a function type is performed when the context
+ * type is a function type
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+import "../../Utils/expect.dart";
+
+typedef int Foo();
+
+class C {
+  int call() => 42;
+}
+
+main() {
+  C c = new C();
+  Function f = c;
+  Expect.equals(42, f());
+
+  test(c);
+}
+
+test(Foo f) {
+  Expect.equals(42, f());
+}
diff --git a/LanguageFeatures/nnbd/implicit_conversions_A02_t02.dart b/LanguageFeatures/nnbd/implicit_conversions_A02_t02.dart
new file mode 100644
index 0000000..967d641
--- /dev/null
+++ b/LanguageFeatures/nnbd/implicit_conversions_A02_t02.dart
@@ -0,0 +1,41 @@
+/*
+ * 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 The implicit tear-off conversion which converts uses of instances
+ * of classes with call methods to the tear-off of their .call method when the
+ * context type is a function type is performed when the context type is a
+ * function type, or the nullable version of a context type.
+ *
+ * @description Check that the implicit tear-off conversion which converts uses
+ * of instances of classes with call methods to the tear-off of their .call
+ * method when the context type is a function type is performed when the context
+ * type is a nullable version of a context type
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+import "../../Utils/expect.dart";
+
+typedef int Foo();
+
+class C {
+  int call() => 42;
+}
+
+main() {
+  C c = new C();
+  Function? f = c;
+  if (f !=  null) {
+    Expect.equals(42, f());
+  }
+  test(c);
+}
+
+test(Foo? f) {
+  if (f != null) {
+    Expect.equals(42, f());
+  }
+}
diff --git a/LanguageFeatures/nnbd/implicit_conversions_A03_t01.dart b/LanguageFeatures/nnbd/implicit_conversions_A03_t01.dart
new file mode 100644
index 0000000..2380960
--- /dev/null
+++ b/LanguageFeatures/nnbd/implicit_conversions_A03_t01.dart
@@ -0,0 +1,47 @@
+/*
+ * 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 Implicit tear-off conversion is not performed on objects of
+ * nullable type, regardless of the context type.
+ *
+ * @description Check that the implicit tear-off conversion is not performed on
+ * objects of nullable type, regardless of the context type.
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+
+typedef int Foo();
+
+class C {
+  int call() => 42;
+}
+
+main() {
+  C? c = new C();
+  Function f = c;
+//             ^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  Foo f2 = c;
+//         ^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  test1(c);
+//      ^
+// [analyzer] unspecified
+// [cfe] unspecified
+  test2(c);
+//      ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
+test1(Foo f) {}
+
+test2(Foo? f) {}