]> git.eshelyaron.com Git - emacs.git/commitdiff
CC Mode: Prevent over-eager recognition of a variable as a found type
authorAlan Mackenzie <acm@muc.de>
Mon, 14 Nov 2022 09:47:14 +0000 (09:47 +0000)
committerAlan Mackenzie <acm@muc.de>
Mon, 14 Nov 2022 09:47:14 +0000 (09:47 +0000)
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.

lisp/progmodes/cc-engine.el

index 5d3d240886922b09f7246de91cd79f508b015f7b..9139699b5b6948d803daab08d70a9ad44ca59067 100644 (file)
@@ -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