From: Nick Bowler Date: Wed, 21 Feb 2024 07:02:57 +0000 (-0500) Subject: libcdecl: Avoid asserts in output declarator traversal. X-Git-Tag: v1.3~13 X-Git-Url: https://git.draconx.ca/gitweb/cdecl99.git/commitdiff_plain/1402a14592dde378698373044afbcef9c38ec2c2 libcdecl: Avoid asserts in output declarator traversal. There is not a strong reason for an assert here. With the assertion removed, the consequence of an unexpected declarator type is that nothing will be output for that declarator. This is an acceptable behaviour in and of itself, so let's just go with that. --- diff --git a/src/declare.c b/src/declare.c index c5a1f23..ea6003f 100644 --- a/src/declare.c +++ b/src/declare.c @@ -17,9 +17,7 @@ */ #include -#include #include -#include #include "cdecl.h" #include "cdecl-internal.h" @@ -124,8 +122,6 @@ declare_declarator(struct output_state *dst, struct cdecl_declarator *d) declare_postfix_child(dst, d->child); declare_function(dst, &d->u.function); return; - default: - assert(0); } } } diff --git a/src/explain.c b/src/explain.c index 6d6aa87..722e721 100644 --- a/src/explain.c +++ b/src/explain.c @@ -1,6 +1,6 @@ /* * Render C declarations as English. - * Copyright © 2011, 2021, 2023 Nick Bowler + * Copyright © 2011, 2021, 2023-2024 Nick Bowler * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,9 +17,7 @@ */ #include -#include #include -#include #include "cdecl.h" #include "cdecl-internal.h" @@ -126,10 +124,8 @@ explain_function(struct output_state *dst, struct cdecl_function *f) static void explain_declarators(struct output_state *dst, struct cdecl_declarator *d) { - if (d->type == CDECL_DECL_IDENT || d->type == CDECL_DECL_NULL) - return; - - explain_declarators(dst, d->child); + if (d->child) + explain_declarators(dst, d->child); switch (d->type) { case CDECL_DECL_POINTER: @@ -141,8 +137,6 @@ explain_declarators(struct output_state *dst, struct cdecl_declarator *d) case CDECL_DECL_FUNCTION: explain_function(dst, &d->u.function); return; - default: - assert(0); } }