struct test { /* Both should be fontified as bitfields; currently, only the former is */ int bf1:5; unsigned bf2:5; }; @@ -5575,7 +5656,9 @@ ;; a valid label. Otherwise the last one probably is the ;; declared identifier and we should back up to the previous ;; type, providing it isn't a cast. - (if (eq (char-after) ?:) + (if (and (eq (char-after) ?:) + (not (and (eq backup-at-type 'prefix) + (eq at-type 'maybe)))) ;; If we've found a specifier keyword then it's a ;; declaration regardless. (throw 'at-decl-or-cast (eq at-decl-or-cast t))