@@ -9,6 +9,10 @@ __externref_t r1;
9
9
extern __externref_t r2 ;
10
10
static __externref_t r3 ;
11
11
12
+ __non_null_externref_t nn_r1 ;
13
+ extern __non_null_externref_t nn_r2 ;
14
+ static __non_null_externref_t nn_r3 ;
15
+
12
16
__externref_t * t1 ; // expected-error {{pointer to WebAssembly reference type is not allowed}}
13
17
__externref_t * * t2 ; // expected-error {{pointer to WebAssembly reference type is not allowed}}
14
18
__externref_t * * * * * * t3 ; // expected-error {{pointer to WebAssembly reference type is not allowed}}
@@ -19,10 +23,24 @@ __externref_t t7[0]; // expected-error {{WebAssembly table must be s
19
23
static __externref_t t8 [0 ][0 ]; // expected-error {{multi-dimensional arrays of WebAssembly references are not allowed}}
20
24
static __externref_t (* t9 )[0 ]; // expected-error {{cannot form a pointer to a WebAssembly table}}
21
25
26
+ __non_null_externref_t * nn_t1 ; // expected-error {{pointer to WebAssembly reference type is not allowed}}
27
+ __non_null_externref_t * * nn_t2 ; // expected-error {{pointer to WebAssembly reference type is not allowed}}
28
+ __non_null_externref_t * * * * * * nn_t3 ; // expected-error {{pointer to WebAssembly reference type is not allowed}}
29
+ static __non_null_externref_t nn_t4 [3 ]; // expected-error {{only zero-length WebAssembly tables are currently supported}}
30
+ static __non_null_externref_t nn_t5 []; // expected-error {{only zero-length WebAssembly tables are currently supported}}
31
+ static __non_null_externref_t nn_t6 [] = {0 }; // expected-error {{only zero-length WebAssembly tables are currently supported}}
32
+ __non_null_externref_t nn_t7 [0 ]; // expected-error {{WebAssembly table must be static}}
33
+ static __non_null_externref_t nn_t8 [0 ][0 ]; // expected-error {{multi-dimensional arrays of WebAssembly references are not allowed}}
34
+ static __non_null_externref_t (* nn_t9 )[0 ]; // expected-error {{cannot form a pointer to a WebAssembly table}}
35
+
22
36
static __externref_t table [0 ];
23
37
static __externref_t other_table [0 ] = {};
24
38
static __externref_t another_table [] = {}; // expected-error {{only zero-length WebAssembly tables are currently supported}}
25
39
40
+ static __non_null_externref_t nn_table [0 ];
41
+ static __non_null_externref_t nn_other_table [0 ] = {};
42
+ static __non_null_externref_t nn_another_table [] = {}; // expected-error {{only zero-length WebAssembly tables are currently supported}}
43
+
26
44
struct s {
27
45
__externref_t f1 ; // expected-error {{field has sizeless type '__externref_t'}}
28
46
__externref_t f2 [0 ]; // expected-error {{field has sizeless type '__externref_t'}}
@@ -33,6 +51,17 @@ struct s {
33
51
__externref_t (* f7 )[0 ]; // expected-error {{cannot form a pointer to a WebAssembly table}}
34
52
};
35
53
54
+
55
+ struct nn_s {
56
+ __externref_t nn_f1 ; // expected-error {{field has sizeless type '__externref_t'}}
57
+ __externref_t nn_f2 [0 ]; // expected-error {{field has sizeless type '__externref_t'}}
58
+ __externref_t nn_f3 []; // expected-error {{field has sizeless type '__externref_t'}}
59
+ __externref_t nn_f4 [0 ][0 ]; // expected-error {{multi-dimensional arrays of WebAssembly references are not allowed}}
60
+ __externref_t * nn_f5 ; // expected-error {{pointer to WebAssembly reference type is not allowed}}
61
+ __externref_t * * * * nn_f6 ; // expected-error {{pointer to WebAssembly reference type is not allowed}}
62
+ __externref_t (* nn_f7 )[0 ]; // expected-error {{cannot form a pointer to a WebAssembly table}}
63
+ };
64
+
36
65
union u {
37
66
__externref_t f1 ; // expected-error {{field has sizeless type '__externref_t'}}
38
67
__externref_t f2 [0 ]; // expected-error {{field has sizeless type '__externref_t'}}
@@ -43,16 +72,38 @@ union u {
43
72
__externref_t (* f7 )[0 ]; // expected-error {{cannot form a pointer to a WebAssembly table}}
44
73
};
45
74
75
+
76
+ union nn_u {
77
+ __externref_t nn_f1 ; // expected-error {{field has sizeless type '__externref_t'}}
78
+ __externref_t nn_f2 [0 ]; // expected-error {{field has sizeless type '__externref_t'}}
79
+ __externref_t nn_f3 []; // expected-error {{field has sizeless type '__externref_t'}}
80
+ __externref_t nn_f4 [0 ][0 ]; // expected-error {{multi-dimensional arrays of WebAssembly references are not allowed}}
81
+ __externref_t * nn_f5 ; // expected-error {{pointer to WebAssembly reference type is not allowed}}
82
+ __externref_t * * * * nn_f6 ; // expected-error {{pointer to WebAssembly reference type is not allowed}}
83
+ __externref_t (* f7 )[0 ]; // expected-error {{cannot form a pointer to a WebAssembly table}}
84
+ };
85
+
46
86
void illegal_argument_1 (__externref_t table []); // expected-error {{cannot use WebAssembly table as a function parameter}}
47
87
void illegal_argument_2 (__externref_t table [0 ][0 ]); // expected-error {{multi-dimensional arrays of WebAssembly references are not allowed}}
48
88
void illegal_argument_3 (__externref_t * table ); // expected-error {{pointer to WebAssembly reference type is not allowed}}
49
89
void illegal_argument_4 (__externref_t * * * table ); // expected-error {{pointer to WebAssembly reference type is not allowed}}
50
90
void illegal_argument_5 (__externref_t (* table )[0 ]); // expected-error {{cannot form a pointer to a WebAssembly table}}
51
91
void illegal_argument_6 (__externref_t table [0 ]); // expected-error {{cannot use WebAssembly table as a function parameter}}
92
+
93
+ void illegal_nn_argument_1 (__non_null_externref_t table []); // expected-error {{cannot use WebAssembly table as a function parameter}}
94
+ void illegal_nn_argument_2 (__non_null_externref_t table [0 ][0 ]); // expected-error {{multi-dimensional arrays of WebAssembly references are not allowed}}
95
+ void illegal_nn_argument_3 (__non_null_externref_t * table ); // expected-error {{pointer to WebAssembly reference type is not allowed}}
96
+ void illegal_nn_argument_4 (__non_null_externref_t * * * table ); // expected-error {{pointer to WebAssembly reference type is not allowed}}
97
+ void illegal_nn_argument_5 (__non_null_externref_t (* table )[0 ]); // expected-error {{cannot form a pointer to a WebAssembly table}}
98
+ void illegal_nn_argument_6 (__non_null_externref_t table [0 ]); // expected-error {{cannot use WebAssembly table as a function parameter}}
52
99
53
100
__externref_t * illegal_return_1 (); // expected-error {{pointer to WebAssembly reference type is not allowed}}
54
101
__externref_t * * * illegal_return_2 (); // expected-error {{pointer to WebAssembly reference type is not allowed}}
55
102
__externref_t (* illegal_return_3 ())[0 ]; // expected-error {{cannot form a pointer to a WebAssembly table}}
103
+
104
+ __non_null_externref_t * illegal_nn_return_1 (); // expected-error {{pointer to WebAssembly reference type is not allowed}}
105
+ __non_null_externref_t * * * illegal_nn_return_2 (); // expected-error {{pointer to WebAssembly reference type is not allowed}}
106
+ __non_null_externref_t (* illegal_nn_return_3 ())[0 ]; // expected-error {{cannot form a pointer to a WebAssembly table}}
56
107
57
108
void varargs (int , ...);
58
109
typedef void (* __funcref funcref_t )();
0 commit comments