You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
__non_null_externref_tnn_r1; // expected-error {{unknown type name '__non_null_externref_t'}}
14
+
extern__non_null_externref_tnn_r2; // expected-error {{unknown type name '__non_null_externref_t'}}
15
+
static__non_null_externref_tnn_r3; // expected-error {{unknown type name '__non_null_externref_t'}}
16
+
12
17
__externref_t*t1; // expected-error {{pointer to WebAssembly reference type is not allowed}}
13
18
__externref_t**t2; // expected-error {{pointer to WebAssembly reference type is not allowed}}
14
19
__externref_t******t3; // expected-error {{pointer to WebAssembly reference type is not allowed}}
@@ -19,10 +24,28 @@ __externref_t t7[0]; // expected-error {{WebAssembly table must be s
19
24
static__externref_tt8[0][0]; // expected-error {{multi-dimensional arrays of WebAssembly references are not allowed}}
20
25
static__externref_t (*t9)[0]; // expected-error {{cannot form a pointer to a WebAssembly table}}
21
26
27
+
__non_null_externref_t*nn_t1; // expected-error {{unknown type name '__non_null_externref_t'}}
28
+
__non_null_externref_t**nn_t2; // expected-error {{unknown type name '__non_null_externref_t'}}
29
+
__non_null_externref_t******nn_t3; // expected-error {{unknown type name '__non_null_externref_t'}}
30
+
static__non_null_externref_tnn_t4[3]; // expected-error {{unknown type name '__non_null_externref_t'}}
31
+
static__non_null_externref_tnn_t5[]; // expected-error {{unknown type name '__non_null_externref_t'}} \
32
+
// cpp-error {{definition of variable with array type needs an explicit size or an initializer}}
33
+
static__non_null_externref_tnn_t6[] = {0}; // expected-error {{unknown type name '__non_null_externref_t'}}
34
+
__non_null_externref_tnn_t7[0]; // expected-error {{unknown type name '__non_null_externref_t'}}
35
+
static__non_null_externref_tnn_t8[0][0]; // expected-error {{unknown type name '__non_null_externref_t'}}
36
+
static__non_null_externref_t (*nn_t9)[0]; // conly-error {{type specifier missing, defaults to 'int'; ISO C99 and later do not support implicit in}} \
37
+
// conly-error {{type specifier missing, defaults to 'int'; ISO C99 and later do not support implicit in}} \
38
+
// conly-error {{function cannot return array type 'int[0]'}} \
39
+
// cpp-error {{unknown type name '__non_null_externref_t'}}
40
+
22
41
static__externref_ttable[0];
23
42
static__externref_tother_table[0] = {};
24
43
static__externref_tanother_table[] = {}; // expected-error {{only zero-length WebAssembly tables are currently supported}}
25
44
45
+
static__non_null_externref_tnn_table[0]; // expected-error {{unknown type name '__non_null_externref_t'}}
46
+
static__non_null_externref_tnn_other_table[0] = {}; // expected-error {{unknown type name '__non_null_externref_t'}}
47
+
static__non_null_externref_tnn_another_table[] = {}; // expected-error {{unknown type name '__non_null_externref_t'}}
48
+
26
49
structs {
27
50
__externref_tf1; // expected-error {{field has sizeless type '__externref_t'}}
28
51
__externref_tf2[0]; // expected-error {{field has sizeless type '__externref_t'}}
@@ -33,6 +56,19 @@ struct s {
33
56
__externref_t (*f7)[0]; // expected-error {{cannot form a pointer to a WebAssembly table}}
34
57
};
35
58
59
+
60
+
structnn_s {
61
+
__non_null_externref_tnn_f1; // expected-error {{unknown type name '__non_null_externref_t'}}
62
+
__non_null_externref_tnn_f2[0]; // expected-error {{unknown type name '__non_null_externref_t'}}
63
+
__non_null_externref_tnn_f3[]; // expected-error {{unknown type name '__non_null_externref_t'}}
64
+
__non_null_externref_tnn_f4[0][0]; // expected-error {{unknown type name '__non_null_externref_t'}}
65
+
__non_null_externref_t*nn_f5; // expected-error {{unknown type name '__non_null_externref_t'}}
66
+
__non_null_externref_t****nn_f6; // expected-error {{unknown type name '__non_null_externref_t'}}
67
+
__non_null_externref_t (*nn_f7)[0]; // conly-error {{type name requires a specifier or qualifier}} \
68
+
// conly-error {{type specifier missing, defaults to 'int'; ISO C99 and later do not support implicit int}} \
69
+
// cpp-error {{unknown type name '__non_null_externref_t'}}
70
+
};
71
+
36
72
unionu {
37
73
__externref_tf1; // expected-error {{field has sizeless type '__externref_t'}}
38
74
__externref_tf2[0]; // expected-error {{field has sizeless type '__externref_t'}}
@@ -43,17 +79,48 @@ union u {
43
79
__externref_t (*f7)[0]; // expected-error {{cannot form a pointer to a WebAssembly table}}
44
80
};
45
81
82
+
83
+
unionnn_u {
84
+
__non_null_externref_tnn_f1; // expected-error {{unknown type name '__non_null_externref_t'}}
85
+
__non_null_externref_tnn_f2[0]; // expected-error {{unknown type name '__non_null_externref_t'}}
86
+
__non_null_externref_tnn_f3[]; // expected-error {{unknown type name '__non_null_externref_t'}}
87
+
__non_null_externref_tnn_f4[0][0]; // expected-error {{unknown type name '__non_null_externref_t'}}
88
+
__non_null_externref_t*nn_f5; // expected-error {{unknown type name '__non_null_externref_t'}}
89
+
__non_null_externref_t****nn_f6; // expected-error {{unknown type name '__non_null_externref_t'}}
90
+
__non_null_externref_t (*f7)[0]; // conly-error {{type specifier missing, defaults to 'int'; ISO C99 and later do not support implicit int}} \
91
+
// conly-error {{type name requires a specifier or qualifier}} \
92
+
// cpp-error {{unknown type name '__non_null_externref_t'}}
93
+
};
94
+
46
95
voidillegal_argument_1(__externref_ttable[]); // expected-error {{cannot use WebAssembly table as a function parameter}}
47
96
voidillegal_argument_2(__externref_ttable[0][0]); // expected-error {{multi-dimensional arrays of WebAssembly references are not allowed}}
48
97
voidillegal_argument_3(__externref_t*table); // expected-error {{pointer to WebAssembly reference type is not allowed}}
49
98
voidillegal_argument_4(__externref_t***table); // expected-error {{pointer to WebAssembly reference type is not allowed}}
50
99
voidillegal_argument_5(__externref_t (*table)[0]); // expected-error {{cannot form a pointer to a WebAssembly table}}
51
100
voidillegal_argument_6(__externref_ttable[0]); // expected-error {{cannot use WebAssembly table as a function parameter}}
52
101
102
+
voidillegal_nn_argument_1(__non_null_externref_ttable[]); // expected-error {{unknown type name '__non_null_externref_t'}}
103
+
voidillegal_nn_argument_2(__non_null_externref_ttable[0][0]); // expected-error {{unknown type name '__non_null_externref_t'}}
104
+
voidillegal_nn_argument_3(__non_null_externref_t*table); // expected-error {{unknown type name '__non_null_externref_t'}}
105
+
voidillegal_nn_argument_4(__non_null_externref_t***table); // expected-error {{unknown type name '__non_null_externref_t'}}
106
+
voidillegal_nn_argument_5(__non_null_externref_t (*table)[0]); // conly-error {{type specifier missing, defaults to 'int'; ISO C99 and later do not support implicit in}} \
107
+
// conly-error {{type specifier missing, defaults to 'int'; ISO C99 and later do not support implicit in}} \
108
+
// conly-error {{function cannot return array type 'int[0]'}} \
109
+
// cpp-error {{variable has incomplete type 'void'}} \
110
+
// cpp-error {{use of undeclared identifier '__non_null_externref_t'}}
111
+
voidillegal_nn_argument_6(__non_null_externref_ttable[0]); // expected-error {{unknown type name '__non_null_externref_t'}}
112
+
53
113
__externref_t*illegal_return_1(); // expected-error {{pointer to WebAssembly reference type is not allowed}}
54
114
__externref_t***illegal_return_2(); // expected-error {{pointer to WebAssembly reference type is not allowed}}
55
115
__externref_t (*illegal_return_3())[0]; // expected-error {{cannot form a pointer to a WebAssembly table}}
56
116
117
+
__non_null_externref_t*illegal_nn_return_1(); // expected-error {{unknown type name '__non_null_externref_t'}}
118
+
__non_null_externref_t***illegal_nn_return_2(); // expected-error {{unknown type name '__non_null_externref_t'}}
119
+
__non_null_externref_t (*illegal_nn_return_3())[0]; // conly-error {{type specifier missing, defaults to 'int'; ISO C99 and later do not support implicit in}} \
120
+
// conly-error {{type specifier missing, defaults to 'int'; ISO C99 and later do not support implicit in}} \
121
+
// conly-error {{function cannot return array type 'int[0]'}} \
122
+
// cpp-error {{unknown type name '__non_null_externref_t'}}
123
+
57
124
voidvarargs(int, ...);
58
125
typedefvoid (*__funcreffuncref_t)();
59
126
typedefvoid (*__funcref__funcreffuncref_fail_t)(); // expected-warning {{attribute '__funcref' is already applied}}
@@ -133,3 +200,16 @@ void foo() {
133
200
void*ret_void_ptr() {
134
201
returntable; // expected-error {{cannot return a WebAssembly table}}
135
202
}
203
+
204
+
// checks all related assignment from extern ref to non null extern ref and vice versa
205
+
voidexternref_assignment(__externref_ter, __non_null_externref_tnn_er) { // expected-error {{unknown type name '__non_null_externref_t'}}
206
+
__externref_tasg_1=er;
207
+
__externref_tasg_2=nn_er;
208
+
209
+
__non_null_externref_tnn_asg_1=er; // conly-error {{expected ';' after expression}} \
210
+
// conly-error {{use of undeclared identifier 'nn_asg_1'}} \
211
+
// cpp-error {{unknown type name '__non_null_externref_t'}}
212
+
__non_null_externref_tnn_asg_2=nn_er; // conly-error {{expected ';' after expression}} \
213
+
// conly-error {{use of undeclared identifier 'nn_asg_2'}} \
214
+
// cpp-error {{unknown type name '__non_null_externref_t'}}
0 commit comments