Fixed check for conflicting extern vs no-linkage/static declarations in functions.

This commit is contained in:
acqn
2023-09-17 23:47:22 +08:00
parent 5ed3108eea
commit 39abd233fe
5 changed files with 61 additions and 18 deletions

View File

@@ -0,0 +1,8 @@
/* Bug #2162 - conflicting declarations in functions */
int main(void)
{
extern int i;
int i = 42; /* Error */
return i;
}

View File

@@ -0,0 +1,8 @@
/* Bug #2162 - conflicting declarations in functions */
int main(void)
{
static int i = 42;
extern int i; /* Error */
return i;
}

View File

@@ -0,0 +1,10 @@
/* Bug #2162 - conflicting declarations in functions */
static int i;
int main(void)
{
extern int i; /* cc65 allows this */
int i = 42; /* Error - if this were accepted, it would be confusing which object i refers to */
return i;
}

View File

@@ -0,0 +1,10 @@
/* Bug #2162 - conflicting declarations in functions */
static int i;
int main(void)
{
static int i = 42; /* OK - this shadows the i in file scope */
extern int i; /* Error - if this were accepted, it would be confusing which object i refers to */
return i;
}