xref: /PHP-8.1/ext/ffi/tests/028.phpt (revision bd9f4fa6)
1--TEST--
2FFI 028: Incomplete arrays inside structure
3--EXTENSIONS--
4ffi
5--INI--
6ffi.enable=1
7--FILE--
8<?php
9try {
10    FFI::cdef("struct _x {int a; int b[0];};");
11    echo "ok\n";
12} catch (Throwable $e) {
13    echo get_class($e) . ": " . $e->getMessage()."\n";
14}
15try {
16    FFI::cdef("struct _x {int a; int b[];};");
17    echo "ok\n";
18} catch (Throwable $e) {
19    echo get_class($e) . ": " . $e->getMessage()."\n";
20}
21try {
22    FFI::cdef("struct _x {int a[0]; int b;};");
23    echo "ok\n";
24} catch (Throwable $e) {
25    echo get_class($e) . ": " . $e->getMessage()."\n";
26}
27try {
28    FFI::cdef("struct _x {int a[]; int b;};");
29    echo "ok\n";
30} catch (Throwable $e) {
31    echo get_class($e) . ": " . $e->getMessage()."\n";
32}
33try {
34    FFI::cdef("struct _x { struct {int a; int b[];}; int c;};");
35    echo "ok\n";
36} catch (Throwable $e) {
37    echo get_class($e) . ": " . $e->getMessage()."\n";
38}
39try {
40    FFI::cdef("union _x {int a; int b[];};");
41    echo "ok\n";
42} catch (Throwable $e) {
43    echo get_class($e) . ": " . $e->getMessage()."\n";
44}
45?>
46--EXPECT--
47ok
48ok
49ok
50FFI\ParserException: Flexible array member not at end of struct at line 1
51FFI\ParserException: Flexible array member not at end of struct at line 1
52FFI\ParserException: Flexible array member in union at line 1
53