| // RUN: %clang_cc1 -triple wasm32 -target-feature +reference-types -fsyntax-only -verify %s |
| |
| typedef void (*__funcref fn_funcref)(void); |
| |
| // Valid funcref table declaration (zero-length, static) |
| static fn_funcref valid_table[0]; // no error expected |
| |
| // Invalid: non-zero length |
| static fn_funcref bad_table[1]; // expected-error {{only zero-length WebAssembly tables are currently supported}} |
| |
| // Array subscript on funcref table should be rejected |
| void test_subscript(void) { |
| (void)valid_table[0]; // expected-error {{cannot subscript a WebAssembly table}} |
| } |
| |
| // Original reproducer from https://github.com/llvm/llvm-project/issues/140933 |
| // The declaration should be rejected (not static, non-zero length) |
| extern fn_funcref issue_table[1]; // expected-error {{WebAssembly table must be static}} |