]> git.eshelyaron.com Git - emacs.git/commitdiff
CC Mode: stop wrongly recognizing "func(a * 9)" as "pointer to type a"
authorAlan Mackenzie <acm@muc.de>
Mon, 10 Dec 2018 12:12:02 +0000 (12:12 +0000)
committerAlan Mackenzie <acm@muc.de>
Mon, 10 Dec 2018 12:12:02 +0000 (12:12 +0000)
* lisp/progmodes/cc-engine.el (c-forward-decl-or-cast-1): When testing for an
identifier after "a *", on failure additionally check for a digit, setting a
new flag variable got-number if one is found.  In the test for CASE 18, check
this flag.

lisp/progmodes/cc-engine.el

index 317968aafd3fac6aeba656b5721eb099d90b7be5..4bd85d740d9534d0bf8567eeca8af12b97f798b0 100644 (file)
@@ -8514,6 +8514,8 @@ comment at the start of cc-engine.el for more info."
          got-parens
          ;; True if there is an identifier in the declarator.
          got-identifier
+         ;; True if we find a number where an identifier was expected.
+         got-number
          ;; True if there's a non-close-paren match of
          ;; `c-type-decl-suffix-key'.
          got-suffix
@@ -8591,7 +8593,9 @@ comment at the start of cc-engine.el for more info."
          (and (looking-at c-identifier-start)
               (setq pos (point))
               (setq got-identifier (c-forward-name))
-              (setq name-start pos)))
+              (setq name-start pos))
+         (when (looking-at "[0-9]")
+           (setq got-number t))) ; We've probably got an arithmetic expression.
 
       ;; Skip over type decl suffix operators and trailing noise macros.
       (while
@@ -9056,7 +9060,7 @@ comment at the start of cc-engine.el for more info."
 
           ;; CASE 18
           (when (and (not (memq context '(nil top)))
-                     (or got-prefix
+                     (or (and got-prefix (not got-number))
                          (and (eq context 'decl)
                               (not c-recognize-paren-inits)
                               (or got-parens got-suffix))))