reject abstract declarators in function definition (Mauro Persano)
This commit is contained in:
7
tcc.c
7
tcc.c
@ -8507,6 +8507,13 @@ static void decl(int l)
|
|||||||
error("cannot use local functions");
|
error("cannot use local functions");
|
||||||
if (!(type.t & VT_FUNC))
|
if (!(type.t & VT_FUNC))
|
||||||
expect("function definition");
|
expect("function definition");
|
||||||
|
|
||||||
|
/* reject abstract declarators in function definition */
|
||||||
|
sym = type.ref;
|
||||||
|
while ((sym = sym->next) != NULL)
|
||||||
|
if (!(sym->v & ~SYM_FIELD))
|
||||||
|
expect("identifier");
|
||||||
|
|
||||||
/* XXX: cannot do better now: convert extern line to static inline */
|
/* XXX: cannot do better now: convert extern line to static inline */
|
||||||
if ((type.t & (VT_EXTERN | VT_INLINE)) == (VT_EXTERN | VT_INLINE))
|
if ((type.t & (VT_EXTERN | VT_INLINE)) == (VT_EXTERN | VT_INLINE))
|
||||||
type.t = (type.t & ~VT_EXTERN) | VT_STATIC;
|
type.t = (type.t & ~VT_EXTERN) | VT_STATIC;
|
||||||
|
|||||||
Reference in New Issue
Block a user