xref: /PHP-7.4/ext/ffi/tests/015.phpt (revision 24fa2008)
1--TEST--
2FFI 015: Incomplete type usage
3--SKIPIF--
4<?php require_once('skipif.inc'); ?>
5--INI--
6ffi.enable=1
7--FILE--
8<?php
9try {
10	FFI::cdef("struct DIR; static struct DIR dir;");
11	echo "ok\n";
12} catch (Throwable $e) {
13	echo get_class($e) . ": " . $e->getMessage()."\n";
14}
15try {
16	FFI::cdef("struct DIR; static struct DIR *ptr;");
17	echo "ok\n";
18} catch (Throwable $e) {
19	echo get_class($e) . ": " . $e->getMessage()."\n";
20}
21try {
22	FFI::cdef("struct DIR; typedef struct DIR DIR; static DIR dir;");
23	echo "ok\n";
24} catch (Throwable $e) {
25	echo get_class($e) . ": " . $e->getMessage()."\n";
26}
27try {
28	FFI::cdef("struct DIR; typedef struct DIR DIR; static DIR *ptr;");
29	echo "ok\n";
30} catch (Throwable $e) {
31	echo get_class($e) . ": " . $e->getMessage()."\n";
32}
33try {
34	FFI::cdef("struct DIR; static struct DIR foo();");
35	echo "ok\n";
36} catch (Throwable $e) {
37	echo get_class($e) . ": " . $e->getMessage()."\n";
38}
39try {
40	FFI::cdef("struct DIR; static struct DIR* foo();");
41	echo "ok\n";
42} catch (Throwable $e) {
43	echo get_class($e) . ": " . $e->getMessage()."\n";
44}
45try {
46	FFI::cdef("struct DIR; static void foo(struct DIR);");
47	echo "ok\n";
48} catch (Throwable $e) {
49	echo get_class($e) . ": " . $e->getMessage()."\n";
50}
51try {
52	FFI::cdef("struct DIR; static void foo(struct DIR*);");
53	echo "ok\n";
54} catch (Throwable $e) {
55	echo get_class($e) . ": " . $e->getMessage()."\n";
56}
57?>
58ok
59--EXPECT--
60FFI\ParserException: incomplete 'struct DIR' at line 1
61ok
62FFI\ParserException: incomplete 'struct DIR' at line 1
63ok
64ok
65ok
66ok
67ok
68ok
69