From d3c9c8aa8f785266dd4302f8ab980c9a6ce99b5b Mon Sep 17 00:00:00 2001 From: Thomas Munro Date: Sat, 16 May 2020 09:26:10 +1200 Subject: [PATCH] Fix formatting of macros that take types. Previously, we would assume that a macro like IsA() in the following example was a cast just because it mentions a known type between parens, and that messed up the formatting of any binary operator that followed: if (IsA(outer_path, UniquePath) ||path->skip_mark_restore) This change errs on the side of assuming that function-like macros are similar to sizeof() and offsetof(), so that operators are formatted correctly: if (IsA(outer_path, UniquePath) || path->skip_mark_restore) Discussion: https://postgr.es/m/20200114221814.GA19630%40alvherre.pgsql --- indent.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/indent.c b/indent.c index 9faf57a..29b3fa4 100644 --- a/indent.c +++ b/indent.c @@ -570,8 +570,13 @@ check_type: ps.in_or_st = false; /* turn off flag for structure decl or * initialization */ } - /* parenthesized type following sizeof or offsetof is not a cast */ - if (ps.keyword == 1 || ps.keyword == 2) + /* + * parenthesized type following sizeof or offsetof is not a cast, + * and we assume the same for any other non-keyword identifier, + * to support macros that take types + */ + if (ps.last_token == ident && + (ps.keyword == 0 || ps.keyword == 1 || ps.keyword == 2)) ps.not_cast_mask |= 1 << ps.p_l_follow; break; -- 2.20.1