Better error for int Foo(int a) declarations #1516

This commit is contained in:
Christoffer Lerno
2024-10-04 18:15:06 +02:00
parent 77ac864995
commit 6fabecac1a
3 changed files with 11 additions and 2 deletions

View File

@@ -6,6 +6,7 @@
- Const vector -> const slice implicit conversion. - Const vector -> const slice implicit conversion.
- Slicing arrays, slices and bytes at compile time #1466. - Slicing arrays, slices and bytes at compile time #1466.
- Better error for `int a[4] = ...`. #1518 - Better error for `int a[4] = ...`. #1518
- Better error for `int Foo(int a)` declarations #1516
### Fixes ### Fixes
- `Unsupported int[*] $x = { 1, 2, 3, 4 }` #1489. - `Unsupported int[*] $x = { 1, 2, 3, 4 }` #1489.

View File

@@ -1134,6 +1134,14 @@ static inline Decl *parse_global_declaration(ParseContext *c)
{ {
if (token_is_some_ident(c->tok)) if (token_is_some_ident(c->tok))
{ {
if ((c->tok == TOKEN_TYPE_IDENT || c->tok == TOKEN_CONST_IDENT) &&
c->lexer.token_type == TOKEN_LPAREN)
{
PRINT_ERROR_HERE("This looks like the beginning of a C style function declaration. "
"Unfortunately it seems to be missing the initial 'fn' and "
"the function name does not start with a lower case.");
return poisoned_decl;
}
PRINT_ERROR_HERE("I expected a variable name here, but global variables need to start with lower case."); PRINT_ERROR_HERE("I expected a variable name here, but global variables need to start with lower case.");
return poisoned_decl; return poisoned_decl;
} }

View File

@@ -8,9 +8,9 @@ fn void! rc_crypt() @test
char[200] x; char[200] x;
String text = "The quick brown fox jumps over the lazy dog."; String text = "The quick brown fox jumps over the lazy dog.";
rc.crypt(text, &x); rc.crypt(text, &x);
char[*] res = x`2ac2fecdd8fbb84638e3a4 char[*] res = x'2ac2fecdd8fbb84638e3a4
820eb205cc8e29c28b9d5d 820eb205cc8e29c28b9d5d
6b2ef974f311964971c90e 6b2ef974f311964971c90e
8b9ca16467ef2dc6fc3520`; 8b9ca16467ef2dc6fc3520';
assert(res[:text.len] == x[:text.len]); assert(res[:text.len] == x[:text.len]);
} }