mirror of
https://github.com/c3lang/c3c.git
synced 2026-02-27 12:01:16 +00:00
Assert when encountering a malformed module alias.
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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))!!;
|
||||
|
||||
1
test/test_suite/module/module_alias_broken.c3
Normal file
1
test/test_suite/module/module_alias_broken.c3
Normal file
@@ -0,0 +1 @@
|
||||
alias foo = module; // #error: 'module' should be followed by a module name.
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user