#993. Wrong annotation tests added
diff --git a/LibTest/ffi/Struct/wrong_annotation_A01_t01.dart b/LibTest/ffi/Struct/wrong_annotation_A01_t01.dart
new file mode 100644
index 0000000..5e71e4a
--- /dev/null
+++ b/LibTest/ffi/Struct/wrong_annotation_A01_t01.dart
@@ -0,0 +1,58 @@
+/*
+ * 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 All field declarations in a Struct subclass declaration must
+ * either have type int or float and be annotated with a NativeType representing
+ * the native type, or must be of type Pointer.
+ *
+ * @description Checks that it is a compile error if double field is annotated
+ * as IntX
+ * @author sgrekhov@unipro.ru
+ */
+import "dart:ffi";
+
+class S1 extends Struct {
+ @Int8()
+//^^^^^^^
+// [analyzer] unspecified
+ external double x;
+// ^
+// [cfe] unspecified
+}
+
+class S2 extends Struct {
+ @Int16()
+//^^^^^^^^
+// [analyzer] unspecified
+ external double x;
+// ^
+// [cfe] unspecified
+}
+
+class S3 extends Struct {
+ @Int32()
+//^^^^^^^^
+// [analyzer] unspecified
+ external double x;
+// ^
+// [cfe] unspecified
+}
+
+class S4 extends Struct {
+ @Int64()
+//^^^^^^^^
+// [analyzer] unspecified
+ external double x;
+// ^
+// [cfe] unspecified
+}
+
+void main() {
+ S1? s1;
+ S2? s2;
+ S3? s3;
+ S4? s4;
+}
diff --git a/LibTest/ffi/Struct/wrong_annotation_A01_t02.dart b/LibTest/ffi/Struct/wrong_annotation_A01_t02.dart
new file mode 100644
index 0000000..0ae992d
--- /dev/null
+++ b/LibTest/ffi/Struct/wrong_annotation_A01_t02.dart
@@ -0,0 +1,58 @@
+/*
+ * 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 All field declarations in a Struct subclass declaration must
+ * either have type int or float and be annotated with a NativeType representing
+ * the native type, or must be of type Pointer.
+ *
+ * @description Checks that it is a compile error if double field is annotated
+ * as UIntX
+ * @author sgrekhov@unipro.ru
+ */
+import "dart:ffi";
+
+class S1 extends Struct {
+ @Uint8()
+//^^^^^^^^
+// [analyzer] unspecified
+ external double x;
+// ^
+// [cfe] unspecified
+}
+
+class S2 extends Struct {
+ @Uint16()
+//^^^^^^^^^
+// [analyzer] unspecified
+ external double x;
+// ^
+// [cfe] unspecified
+}
+
+class S3 extends Struct {
+ @Uint32()
+//^^^^^^^^^
+// [analyzer] unspecified
+ external double x;
+// ^
+// [cfe] unspecified
+}
+
+class S4 extends Struct {
+ @Uint64()
+//^^^^^^^^^
+// [analyzer] unspecified
+ external double x;
+// ^
+// [cfe] unspecified
+}
+
+void main() {
+ S1? s1;
+ S2? s2;
+ S3? s3;
+ S4? s4;
+}
diff --git a/LibTest/ffi/Struct/wrong_annotation_A01_t03.dart b/LibTest/ffi/Struct/wrong_annotation_A01_t03.dart
new file mode 100644
index 0000000..1041fe3
--- /dev/null
+++ b/LibTest/ffi/Struct/wrong_annotation_A01_t03.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 All field declarations in a Struct subclass declaration must
+ * either have type int or float and be annotated with a NativeType representing
+ * the native type, or must be of type Pointer.
+ *
+ * @description Checks that it is a compile error if int field is annotated
+ * as Float or Double
+ * @author sgrekhov@unipro.ru
+ */
+import "dart:ffi";
+
+class S1 extends Struct {
+ @Double()
+//^^^^^^^^^
+// [analyzer] unspecified
+ external int x;
+// ^
+// [cfe] unspecified
+}
+
+class S2 extends Struct {
+ @Float()
+//^^^^^^^^^
+// [analyzer] unspecified
+ external int x;
+// ^
+// [cfe] unspecified
+}
+
+void main() {
+ S1? s1;
+ S2? s2;
+}
diff --git a/LibTest/ffi/Struct/wrong_annotation_A01_t04.dart b/LibTest/ffi/Struct/wrong_annotation_A01_t04.dart
new file mode 100644
index 0000000..e7c3d25
--- /dev/null
+++ b/LibTest/ffi/Struct/wrong_annotation_A01_t04.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 All field declarations in a Struct subclass declaration must
+ * either have type int or float and be annotated with a NativeType representing
+ * the native type, or must be of type Pointer.
+ *
+ * @description Checks that it is a compile error if field is annotated
+ * as Void
+ * @author sgrekhov@unipro.ru
+ */
+import "dart:ffi";
+
+class S1 extends Struct {
+ @Void()
+//^^^^^^^
+// [analyzer] unspecified
+ external int x;
+// ^
+// [cfe] unspecified
+}
+
+class S2 extends Struct {
+ @Void()
+//^^^^^^^
+// [analyzer] unspecified
+ external double x;
+// ^
+// [cfe] unspecified
+}
+
+void main() {
+ S1? s1;
+ S2? s2;
+}
diff --git a/LibTest/ffi/Struct/wrong_annotation_A01_t05.dart b/LibTest/ffi/Struct/wrong_annotation_A01_t05.dart
new file mode 100644
index 0000000..7b51a96
--- /dev/null
+++ b/LibTest/ffi/Struct/wrong_annotation_A01_t05.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 All field declarations in a Struct subclass declaration must
+ * either have type int or float and be annotated with a NativeType representing
+ * the native type, or must be of type Pointer.
+ *
+ * @description Checks that it is a compile error if double field is annotated
+ * as IntPtr
+ * @author sgrekhov@unipro.ru
+ */
+import "dart:ffi";
+
+class S1 extends Struct {
+ @IntPtr()
+//^^^^^^^^^
+// [analyzer] unspecified
+ external double x;
+// ^
+// [cfe] unspecified
+}
+
+class S2 extends Struct {
+ @IntPtr()
+//^^^^^^^^^
+// [analyzer] unspecified
+ external double x;
+// ^
+// [cfe] unspecified
+}
+
+void main() {
+ S1? s1;
+ S2? s2;
+}
diff --git a/LibTest/ffi/Struct/wrong_annotation_A01_t06.dart b/LibTest/ffi/Struct/wrong_annotation_A01_t06.dart
new file mode 100644
index 0000000..fe7efb1
--- /dev/null
+++ b/LibTest/ffi/Struct/wrong_annotation_A01_t06.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 All field declarations in a Struct subclass declaration must
+ * either have type int or float and be annotated with a NativeType representing
+ * the native type, or must be of type Pointer.
+ *
+ * @description Checks that it is a compile error if double field is annotated
+ * as NativeType
+ * @author sgrekhov@unipro.ru
+ */
+import "dart:ffi";
+
+class S1 extends Struct {
+ @NativeType()
+//^^^^^^^^^^^^^
+// [analyzer] unspecified
+ external double x;
+// ^
+// [cfe] unspecified
+}
+
+class S2 extends Struct {
+ @NativeType()
+//^^^^^^^^^^^^^
+// [analyzer] unspecified
+ external int x;
+// ^
+// [cfe] unspecified
+}
+
+void main() {
+ S1? s1;
+ S2? s2;
+}