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.
|
- `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.
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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))!!;
|
||||||
|
|||||||
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
|
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()
|
||||||
|
|||||||
Reference in New Issue
Block a user