1
0
mirror of https://github.com/cc65/cc65.git synced 2024-10-31 20:06:11 +00:00
cc65/test/val/bug2302.c
acqn 1e4d1b4311 Fixed function declarator parser when a parameter has a function type.
Ensured check on parameter lists without types in non-definition declarations.
2023-12-14 02:34:03 +08:00

33 lines
932 B
C

/* Bug #2302 - Parameters of function types not parsed correctly */
#include <stdio.h>
typedef int A;
int zoo(A ()); /* OK: int zoo(int (*)()) */
int zoo(A (())); /* OK: int zoo(int ((*)())) aka. int zoo(int (*)()) */
int zoo(A (A)); /* OK: int zoo(int (*)(int)) */
int zoo(A ((A))); /* OK: int zoo(int ((*)(int))) aka. int zoo(int (*)(int)) */
int zoo(A A(A)); /* OK: int zoo(int (*A)(int)) */
int zoo(A (*)(A)); /* OK: int zoo(int (*)(int)) */
int zoo(A (*A)(A)); /* OK: int zoo(int (*A)(int)) */
int zoo(A ((*A))(A)); /* OK: int zoo(int (*A)(int)) */
int zoo(A ((((*((fp))))(A A)))) /* OK: int zoo(int (*fp)(int A)) */
{
return fp(42);
}
int bar(int a)
{
return a ^ 42;
}
int main(void)
{
int a = zoo((int (*)())bar);
if (a != 0)
{
printf("failed: a = %d\n", a);
}
return a;
}