From 7cdd65dd26cc523b3ff6d4acfc19488a47be8d7b Mon Sep 17 00:00:00 2001 From: Luc Van Oostenryck Date: Sun, 19 Jul 2020 18:34:25 +0200 Subject: allow [*] in array declarators Since C99, a '*' is allowed in an abstract array declarator to specify that the array is a VLA with a yet-to-be-determined size. So, accept this construction (but still ignore it for now). Signed-off-by: Luc Van Oostenryck --- parse.c | 7 ++++++- validation/abstract-array-declarator-star.c | 1 - 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/parse.c b/parse.c index c7ca3dce..6db70f1a 100644 --- a/parse.c +++ b/parse.c @@ -1717,7 +1717,12 @@ static struct token *abstract_array_declarator(struct token *token, struct symbo has_static |= (sym->op->type & KW_STATIC); token = token->next; } - token = assignment_expression(token, &expr); + if (match_op(token, '*') && match_op(token->next, ']')) { + // FIXME: '[*]' is treated like '[]' + token = token->next; + } else { + token = assignment_expression(token, &expr); + } sym->array_size = expr; return token; } diff --git a/validation/abstract-array-declarator-star.c b/validation/abstract-array-declarator-star.c index fdbdff19..fc42da3a 100644 --- a/validation/abstract-array-declarator-star.c +++ b/validation/abstract-array-declarator-star.c @@ -5,5 +5,4 @@ void ok9(int a[const volatile restrict *]); /* * check-name: abstract-array-declarator-star - * check-known-to-fail */ -- cgit 1.2.3-korg