summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Mackenzie <acm@muc.de>2022-11-14 09:47:14 +0000
committerAlan Mackenzie <acm@muc.de>2022-11-14 09:47:14 +0000
commit7e493b1773b8e7c5762af4e6f21dadec649ce4dc (patch)
tree0a21dadb1c21bea4c1d2ee831fd009e04d07d4f6
parent83a497ee879959cd1b052fa9138adb79b480394d (diff)
downloademacs-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.el5
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