]> git.eshelyaron.com Git - emacs.git/commitdiff
CC Mode: Stabilize the fontification in the presence of "register" keywords
authorAlan Mackenzie <acm@muc.de>
Tue, 8 Nov 2022 11:53:37 +0000 (11:53 +0000)
committerAlan Mackenzie <acm@muc.de>
Tue, 8 Nov 2022 11:53:37 +0000 (11:53 +0000)
This fixes bug #58883.

* lisp/progmodes/cc-engine.el (c-forward-decl-or-cast-1): New variable
unsafe-maybe.  Set it in CASE 10 rather than setting c-record-type-identifiers
to nil.  Near the end of the function, when unsafe-maybe is set, bind
c-promote-possible-types to 'just-one rather than t around the call to
c-forward-type.

lisp/progmodes/cc-engine.el

index 8cf882d569987ddfa53bd3c37a179c35bc5dc243..145f0cacd13cc8341fd66c19d3882b7597cc0b83 100644 (file)
@@ -10208,7 +10208,11 @@ This function might do hidden buffer changes."
        (save-rec-ref-ids c-record-ref-identifiers)
        ;; Set when we parse a declaration which might also be an expression,
        ;; such as "a *b".  See CASE 16 and CASE 17.
-       maybe-expression)
+       maybe-expression
+       ;; Set for the type when `c-forward-type' returned `maybe', and we
+       ;; want to fontify it as a type, but aren't confident enough to enter
+       ;; it into `c-found-types'.
+       unsafe-maybe)
 
     (save-excursion
       (goto-char preceding-token-end)
@@ -10904,7 +10908,7 @@ This function might do hidden buffer changes."
           ;; a statement beginning with an identifier.
           (when (and (eq at-type 'maybe)
                      (not (eq context 'top)))
-            (setq c-record-type-identifiers nil))
+            (setq unsafe-maybe t))
           (throw 'at-decl-or-cast t))
 
         ;; CASE 11
@@ -11207,7 +11211,8 @@ This function might do hidden buffer changes."
                 ;; fontification just because it's "a known type that can't
                 ;; be a name or other expression".  2013-09-18.
                 )
-       (let ((c-promote-possible-types t))
+       (let ((c-promote-possible-types
+              (if unsafe-maybe 'just-one t)))
          (save-excursion
            (goto-char type-start)
            (c-forward-type))))