diff options
author | Alan Mackenzie <acm@muc.de> | 2022-11-14 09:47:14 +0000 |
---|---|---|
committer | Alan Mackenzie <acm@muc.de> | 2022-11-14 09:47:14 +0000 |
commit | 7e493b1773b8e7c5762af4e6f21dadec649ce4dc (patch) | |
tree | 0a21dadb1c21bea4c1d2ee831fd009e04d07d4f6 | |
parent | 83a497ee879959cd1b052fa9138adb79b480394d (diff) | |
download | emacs-7e493b1773b8e7c5762af4e6f21dadec649ce4dc.tar.gz |
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.
-rw-r--r-- | lisp/progmodes/cc-engine.el | 5 |
1 files changed, 5 insertions, 0 deletions
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 |