]> git.eshelyaron.com Git - emacs.git/commitdiff
CC Mode: Fix the "asymmetry rule" for fontifying a type followed by *
authorAlan Mackenzie <acm@muc.de>
Fri, 25 Nov 2022 09:49:02 +0000 (09:49 +0000)
committerAlan Mackenzie <acm@muc.de>
Fri, 25 Nov 2022 09:49:02 +0000 (09:49 +0000)
This fixes bug #59427.  We now handle correctly the case when a parenthesis
follows the * which is ambiguously a multiplication or indirection operator.
Also, we don't recognise a type thus found as a found type - the evidence is
too weak.

* lisp/progmodes/cc-engine.el (c-forward-decl-or-cast-1): Fix CASE 17.5 as
above.

lisp/progmodes/cc-engine.el

index 9e09e5150d9ea8ebd609e7f44e9e2150faae2b31..11ddb39ed91fa0eb6b16cfd481954827ee1b3270 100644 (file)
@@ -11077,8 +11077,9 @@ This function might do hidden buffer changes."
                              at-decl-start))
                 (let ((space-before-id
                        (save-excursion
-                         (goto-char name-start)
-                         (or (bolp) (memq (char-before) '(?\  ?\t)))))
+                         (goto-char id-start) ; Position of "*".
+                         (and (> (skip-chars-forward "* \t\n\r") 0)
+                              (memq (char-before) '(?\  ?\t ?\n ?\r)))))
                       (space-after-type
                        (save-excursion
                          (goto-char type-start)
@@ -11088,6 +11089,8 @@ This function might do hidden buffer changes."
                                   (memq (char-after) '(?\  ?\t)))))))
                   (when (not (eq (not space-before-id)
                                  (not space-after-type)))
+                    (when (eq at-type 'maybe)
+                      (setq unsafe-maybe t))
                     (setq maybe-expression t)
                     (throw 'at-decl-or-cast t)))))