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) {}