aboutsummaryrefslogtreecommitdiff
path: root/tcc.c
diff options
context:
space:
mode:
Diffstat (limited to 'tcc.c')
-rw-r--r--tcc.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/tcc.c b/tcc.c
index 3da2068..7ad5ce3 100644
--- a/tcc.c
+++ b/tcc.c
@@ -8507,6 +8507,13 @@ static void decl(int l)
error("cannot use local functions");
if (!(type.t & VT_FUNC))
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 */
if ((type.t & (VT_EXTERN | VT_INLINE)) == (VT_EXTERN | VT_INLINE))
type.t = (type.t & ~VT_EXTERN) | VT_STATIC;