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. - `i<n>` suffixes were not caught when n < 8, causing an assert.
- Parse error in `$defined` was not handled correctly, leading to an assertion. - Parse error in `$defined` was not handled correctly, leading to an assertion.
- Assert when struct size would exceed 4 GB. - Assert when struct size would exceed 4 GB.
- Assert when encountering a malformed module alias.
### Stdlib changes ### Stdlib changes
- Add `ThreadPool` join function to wait for all threads to finish in the pool without destroying the threads. - 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; 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); Path *path = parse_module_path(c);
if (!path) return poisoned_decl; 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) 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)!!; io::fprintfn((OutStream)&output.buffer, "\n\n\n---------------------------------------------------> %s\n\n", file.ptr.name)!!;
(void)file_ll.seek(0); (void)file_ll.seek(0);
io::fprintn((OutStream)&output.buffer, (String)io::read_fully(tmem, &file_ll))!!; 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 struct Foo
{ {
int a; 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() fn int main()