Allow `array[..., void]`
arnetheduck opened this issue · comments
Summary
Extend void
handling to also allow array[..., void]
.
Description
In #23419 (comment), it is noted that an array of void
is not allowed - this unnecessarily burdens generic code since array of void
gracefully can be handled the same way as an ordinary void
type.
Since void
has no data, it follows naturally that array of void also doesn't have any data. We allow void variables, so we should also allow array-of-void variables - they are useful to simplify generic code and can be used as compile-time information carriers for macros, dsl etc.
Alternatives
No response
Examples
No response
Backwards Compatibility
No response
Links
No response
Currently void
is only valid for generic argument, function return type, etc, but not for any concrete type.
As a variable of void
is invalid, an array of void
cannot be valid...
As a variable of
void
is invalid, an array ofvoid
cannot be valid...
I think @arnetheduck meant parameter
This is valid Nim and compiles
proc foo(v: void) =
echo "compiles"
foo()
tuple[]
serves a similar purpose but it doesn't get erased in the backend and it doesn't have a special meaning like void
that makes it independent from the type system. Some discussion on changing void
is on nim-lang/RFCs#508 and #20609.