pmatos marked an inline comment as done. pmatos added inline comments.
================ Comment at: clang/test/Sema/wasm-refs-and-tables.c:17 +static __externref_t t6[] = {0}; // expected-error {{only zero-length WebAssembly tables are currently supported}} +__externref_t t7[0]; // expected-error {{WebAssembly table must be static}} +static __externref_t t8[0][0]; // expected-error {{multi-dimensional arrays of WebAssembly references are not allowed}} ---------------- aaron.ballman wrote: > pmatos wrote: > > aaron.ballman wrote: > > > So why is `extern __externref_t r2;` allowed? Is it because it's not an > > > array declaration? > > I am not sure I understand the question. The externref value can be > > declared in another module and here we just define that. Array declarations > > of externref just define tables of externref values. > Thanks, that helps explain my confusion (boy, I *really* do not like these > types; they are quite unintuitive). What was confusing me here is that > `__externref_t t7[0];` fails because the declaration doesn't declare a static > identifier (yet, in C, it doesn't declare *anything at all* because it an > array of zero elements of a sizeless type) while `extern __externref_t r2;` > is fine despite not declaring a static identifier (yet, in C, it also doesn't > declare *anything at all* because it's a sizeless type). I don't think > there's anything to be done about this, the design is what it is in the > WebAssembly standard, but all of my discomfort stems around how deeply weird > this design is (and it shows with just how much effort we have to go to in > order to restrict all the various ways you can use these identifiers). Yes, I understand. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D139010/new/ https://reviews.llvm.org/D139010 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits