From e11e45f624bf848315cf7b1862b69baf76cd5a38 Mon Sep 17 00:00:00 2001 From: Manuel Klimek Date: Thu, 5 Sep 2013 15:34:55 +0000 Subject: [PATCH] Fixes PR 17106 (explicitly typed enums are formatted differently). Before: enum X : int { A, B, C }; After: enum X : int { A, B, C }; git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190054 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Format/UnwrappedLineParser.cpp | 4 +--- unittests/Format/FormatTest.cpp | 7 +++++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/Format/UnwrappedLineParser.cpp b/lib/Format/UnwrappedLineParser.cpp index 5029bd689b..766e1d8d92 100644 --- a/lib/Format/UnwrappedLineParser.cpp +++ b/lib/Format/UnwrappedLineParser.cpp @@ -1035,9 +1035,7 @@ void UnwrappedLineParser::parseEnum() { if (FormatTok->Tok.is(tok::kw_class) || FormatTok->Tok.is(tok::kw_struct)) nextToken(); - if (FormatTok->Tok.is(tok::identifier) || - FormatTok->Tok.is(tok::kw___attribute) || - FormatTok->Tok.is(tok::kw___declspec)) { + while (FormatTok->Tok.getIdentifierInfo() || FormatTok->Tok.is(tok::colon)) { nextToken(); // We can have macros or attributes in between 'enum' and the enum name. if (FormatTok->Tok.is(tok::l_paren)) { diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp index 2307b03f51..6d953eb301 100644 --- a/unittests/Format/FormatTest.cpp +++ b/unittests/Format/FormatTest.cpp @@ -1573,6 +1573,13 @@ TEST_F(FormatTest, FormatsEnumClass) { verifyFormat("enum class X f() {\n a();\n return 42;\n}"); } +TEST_F(FormatTest, FormatsEnumTypes) { + verifyFormat("enum X : int {\n" + " A,\n" + " B\n" + "};"); +} + TEST_F(FormatTest, FormatsBitfields) { verifyFormat("struct Bitfields {\n" " unsigned sClass : 8;\n" -- 2.40.0