Fixes #1237. More tests for Array and Pointer with wrong types
diff --git a/LibTest/ffi/Array/Array.multi_A03_t02.dart b/LibTest/ffi/Array/Array.multi_A03_t02.dart
index db369f5..eade4de 100644
--- a/LibTest/ffi/Array/Array.multi_A03_t02.dart
+++ b/LibTest/ffi/Array/Array.multi_A03_t02.dart
@@ -45,6 +45,18 @@
// ^^^^
// [analyzer] unspecified
// [cfe] unspecified
+
+ @Array.multi([16])
+ external Array<Object?> a5;
+// ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+ @Array.multy([16])
+ external Array<Never> a6;
+// ^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
}
main() {
diff --git a/LibTest/ffi/Array/Array_A03_t02.dart b/LibTest/ffi/Array/Array_A03_t02.dart
index f39ddc7..e6c6d83 100644
--- a/LibTest/ffi/Array/Array_A03_t02.dart
+++ b/LibTest/ffi/Array/Array_A03_t02.dart
@@ -51,6 +51,18 @@
// ^^^^
// [analyzer] unspecified
// [cfe] unspecified
+
+ @Array(16)
+ external Array<Object?> a5;
+// ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+ @Array(16)
+ external Array<Never> a6;
+// ^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
}
main() {
diff --git a/LibTest/ffi/Pointer/Pointer_A02_t01.dart b/LibTest/ffi/Pointer/Pointer_A02_t01.dart
new file mode 100644
index 0000000..73d97eb
--- /dev/null
+++ b/LibTest/ffi/Pointer/Pointer_A02_t01.dart
@@ -0,0 +1,19 @@
+// Copyright (c) 2021, 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 Pointer<T extends NativeType>
+/// Represents a pointer into the native C memory. Cannot be extended.
+///
+/// @description Checks that it is a compile time error if pointer class is
+/// wrong
+/// @author sgrekhov@unipro.ru
+
+import "dart:ffi";
+
+void main() {
+ Pointer<NotExistingClass> p = Pointer.fromAddress(0);
+// ^^^^^^^^^^^^^^^^
+// [cfe] unspecified
+// [analyzer] unspecified
+}
diff --git a/LibTest/ffi/Pointer/Pointer_A02_t02.dart b/LibTest/ffi/Pointer/Pointer_A02_t02.dart
new file mode 100644
index 0000000..d8b8ef3
--- /dev/null
+++ b/LibTest/ffi/Pointer/Pointer_A02_t02.dart
@@ -0,0 +1,38 @@
+// Copyright (c) 2021, 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 Pointer<T extends NativeType>
+/// Represents a pointer into the native C memory. Cannot be extended.
+///
+/// @description Checks that it is a compile time error if pointer class is
+/// not subtype of NativeType
+/// @author sgrekhov@unipro.ru
+
+import "dart:ffi";
+
+import 'package:ffi/ffi.dart';
+
+void main() {
+ Pointer<Int16> p = calloc<Int16>();
+ Pointer<int> p1 = Pointer.fromAddress(p.address);
+// ^^^
+// [cfe] unspecified
+// [analyzer] unspecified
+
+ Pointer<double> p2 = Pointer.fromAddress(p.address);
+// ^^^^^^
+// [cfe] unspecified
+// [analyzer] unspecified
+
+ Pointer<String> p3 = Pointer.fromAddress(p.address);
+// ^^^^^^
+// [cfe] unspecified
+// [analyzer] unspecified
+
+ Pointer<Object> p4 = Pointer.fromAddress(p.address);
+// ^^^^^^
+// [cfe] unspecified
+// [analyzer] unspecified
+
+}
diff --git a/LibTest/ffi/Pointer/Pointer_A02_t03.dart b/LibTest/ffi/Pointer/Pointer_A02_t03.dart
new file mode 100644
index 0000000..5dba02d
--- /dev/null
+++ b/LibTest/ffi/Pointer/Pointer_A02_t03.dart
@@ -0,0 +1,42 @@
+// Copyright (c) 2021, 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 Pointer<T extends NativeType>
+/// Represents a pointer into the native C memory. Cannot be extended.
+///
+/// @description Checks that it is a compile time error if pointer class is a
+/// top type
+/// @author sgrekhov@unipro.ru
+/// @issue 47746
+
+import "dart:ffi";
+import 'package:ffi/ffi.dart';
+
+void main() {
+ Pointer<Int16> p = calloc<Int16>();
+ Pointer<dynamic> p1 = Pointer.fromAddress(p.address);
+// ^^^^^^^
+// [cfe] unspecified
+// [analyzer] unspecified
+
+ Pointer<void> p2 = Pointer.fromAddress(p.address);
+// ^^^^
+// [cfe] unspecified
+// [analyzer] unspecified
+
+ Pointer<Null> p3 = Pointer.fromAddress(p.address);
+// ^^^^
+// [cfe] unspecified
+// [analyzer] unspecified
+
+ Pointer<Object?> p4 = Pointer.fromAddress(p.address);
+// ^^^^^^^
+// [cfe] unspecified
+// [analyzer] unspecified
+
+ Pointer<Never> p5 = Pointer.fromAddress(p.address);
+// ^^^^^
+// [cfe] unspecified
+// [analyzer] unspecified
+}