Assert when encountering a malformed module alias.

This commit is contained in:
Christoffer Lerno
2025-12-29 22:41:42 +01:00
parent c949bd3108
commit e4f1b57bd0
5 changed files with 10 additions and 2 deletions

View File

@@ -39,6 +39,7 @@
- `i<n>` suffixes were not caught when n < 8, causing an assert.
- Parse error in `$defined` was not handled correctly, leading to an assertion.
- Assert when struct size would exceed 4 GB.
- Assert when encountering a malformed module alias.
### Stdlib changes
- Add `ThreadPool` join function to wait for all threads to finish in the pool without destroying the threads.

View File

@@ -2471,6 +2471,12 @@ static inline Decl *parse_alias_module(ParseContext *c, Decl *decl, TokenType to
decl->decl_kind = DECL_ALIAS_PATH;
if (!tok_is(c, TOKEN_IDENT))
{
PRINT_ERROR_HERE("'module' should be followed by a module name.");
return poisoned_decl;
}
Path *path = parse_module_path(c);
if (!path) return poisoned_decl;

View File

@@ -598,7 +598,7 @@ fn bool test_file(Path file_path, TestOutput* output, usz index)
}
if (try next)
{
io::fprintfn((OutStream)&output.buffer, `FAILED - %s did not contain: "%s"`, file.ptr.name, next)!!;
io::fprintfn((OutStream)&output.buffer, `FAILED - %s did not contain: %s`, file.ptr.name, next)!!;
io::fprintfn((OutStream)&output.buffer, "\n\n\n---------------------------------------------------> %s\n\n", file.ptr.name)!!;
(void)file_ll.seek(0);
io::fprintn((OutStream)&output.buffer, (String)io::read_fully(tmem, &file_ll))!!;

View File

@@ -0,0 +1 @@
alias foo = module; // #error: 'module' should be followed by a module name.

View File

@@ -2,7 +2,7 @@ import std;
struct Foo
{
int a;
int[int.max] b; // #error: "Struct member 'b' would cause the struct to become too large
int[int.max] b; // #error: Struct member 'b' would cause the struct to become too large
}
fn int main()