From 5a7451c383be5e6be52c986a9392ff551e656f6a Mon Sep 17 00:00:00 2001 From: Alan Mackenzie Date: Mon, 10 Dec 2018 12:12:02 +0000 Subject: [PATCH] CC Mode: stop wrongly recognizing "func(a * 9)" as "pointer to type a" * 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 | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el index 317968aafd3..4bd85d740d9 100644 --- a/lisp/progmodes/cc-engine.el +++ b/lisp/progmodes/cc-engine.el @@ -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)))) -- 2.39.2