]> git.eshelyaron.com Git - emacs.git/commitdiff
C++ Mode: handle compound identifiers preceding brace lists correctly
authorAlan Mackenzie <acm@muc.de>
Sun, 29 Aug 2021 14:03:57 +0000 (14:03 +0000)
committerAlan Mackenzie <acm@muc.de>
Sun, 29 Aug 2021 14:03:57 +0000 (14:03 +0000)
* lisp/progmodes/cc-engine.el (c-looking-at-or-maybe-in-bracelist): early in
function, check alternatively for c-back-over-compound-identifier when doing
c-backward-token-2.

* bracelist-36.{cc,res}: New test files.

lisp/progmodes/cc-engine.el

index 5d2e41ae5757d907ad6cfd98672bff55ec234c1c..c305cae754e20deaf878b6463065f6275dfb987b 100644 (file)
@@ -12288,12 +12288,15 @@ comment at the start of cc-engine.el for more info."
          pos2 in-paren parens-before-brace
          paren-state paren-pos)
 
-      (setq res (c-backward-token-2 1 t lim))
+      (setq res
+           (or (progn (c-backward-syntactic-ws)
+                      (c-back-over-compound-identifier))
+               (c-backward-token-2 1 t lim)))
       ;; Checks to do only on the first sexp before the brace.
       ;; Have we a C++ initialization, without an "="?
       (if (and (c-major-mode-is 'c++-mode)
               (cond
-               ((and (or (not (eq res 0))
+               ((and (or (not (memq res '(t 0)))
                          (eq (char-after) ?,))
                      (setq paren-state (c-parse-state))
                      (setq paren-pos (c-pull-open-brace paren-state))
@@ -12317,7 +12320,7 @@ comment at the start of cc-engine.el for more info."
                (t nil))
               (save-excursion
                 (cond
-                 ((or (not (eq res 0))
+                 ((or (not (memq res '(t 0)))
                       (eq (char-after) ?,))
                   (and (setq paren-state (c-parse-state))
                        (setq paren-pos (c-pull-open-brace paren-state))