From: Alan Mackenzie Date: Mon, 14 Nov 2022 09:47:14 +0000 (+0000) Subject: CC Mode: Prevent over-eager recognition of a variable as a found type X-Git-Tag: emacs-29.0.90~1616^2~163 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=7e493b1773b8e7c5762af4e6f21dadec649ce4dc;p=emacs.git CC Mode: Prevent over-eager recognition of a variable as a found type This fixes bug #59233. It occurred in the C source code fragment open_replies = alloca (nproviders ) , where typing a * before the closing parenthesis caused nproviders to be prematurely recognized as a type. * lisp/progmodes/cc-engine.el (c-forward-decl-or-cast-1): CASE 18 - set unsafe-maybe to t, when needed. --- diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el index 5d3d2408869..9139699b5b6 100644 --- a/lisp/progmodes/cc-engine.el +++ b/lisp/progmodes/cc-engine.el @@ -11079,6 +11079,11 @@ This function might do hidden buffer changes." ;; `got-parens' or `got-suffix' is set it's "a()", "a[]", "a()[]", ;; or similar, which we accept only if the context rules out ;; expressions. + ;; + ;; If we've got at-type 'maybe, we cannot confidently promote the + ;; possible type to a found type. + (when (and (eq at-type 'maybe)) + (setq unsafe-maybe t)) (throw 'at-decl-or-cast t))) ;; If we had a complete symbol table here (which rules out