r182855 - Leave some macros on their own line
Daniel Jasper
djasper at google.com
Wed May 29 06:16:10 PDT 2013
Author: djasper
Date: Wed May 29 08:16:10 2013
New Revision: 182855
URL: http://llvm.org/viewvc/llvm-project?rev=182855&view=rev
Log:
Leave some macros on their own line
If an identifier is on its own line and it is all upper case, it is highly
likely that this is a macro that is meant to stand on a line by itself.
Before:
class A : public QObject {
Q_OBJECT A() {}
};
Ater:
class A : public QObject {
Q_OBJECT
A() {}
};
Modified:
cfe/trunk/lib/Format/UnwrappedLineParser.cpp
cfe/trunk/unittests/Format/FormatTest.cpp
Modified: cfe/trunk/lib/Format/UnwrappedLineParser.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/UnwrappedLineParser.cpp?rev=182855&r1=182854&r2=182855&view=diff
==============================================================================
--- cfe/trunk/lib/Format/UnwrappedLineParser.cpp (original)
+++ cfe/trunk/lib/Format/UnwrappedLineParser.cpp Wed May 29 08:16:10 2013
@@ -581,7 +581,8 @@ void UnwrappedLineParser::parseStructura
// Otherwise this was a braced init list, and the structural
// element continues.
break;
- case tok::identifier:
+ case tok::identifier: {
+ StringRef Text = FormatTok->TokenText;
nextToken();
if (Line->Tokens.size() == 1) {
if (FormatTok->Tok.is(tok::colon)) {
@@ -596,9 +597,14 @@ void UnwrappedLineParser::parseStructura
addUnwrappedLine();
return;
}
+ } else if (FormatTok->HasUnescapedNewline && Text.size() >= 5 &&
+ Text == Text.upper()) {
+ // Recognize free-standing macros like Q_OBJECT.
+ addUnwrappedLine();
}
}
break;
+ }
case tok::equal:
nextToken();
if (FormatTok->Tok.is(tok::l_brace)) {
Modified: cfe/trunk/unittests/Format/FormatTest.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTest.cpp?rev=182855&r1=182854&r2=182855&view=diff
==============================================================================
--- cfe/trunk/unittests/Format/FormatTest.cpp (original)
+++ cfe/trunk/unittests/Format/FormatTest.cpp Wed May 29 08:16:10 2013
@@ -1690,6 +1690,34 @@ TEST_F(FormatTest, MacroDefinitionsWithI
"f(STR(this_is_a_string_literal{));");
}
+TEST_F(FormatTest, MacrosWithoutTrailingSemicolon) {
+ verifyFormat("SOME_TYPE_NAME abc;"); // Gated on the newline.
+ EXPECT_EQ("class A : public QObject {\n"
+ " Q_OBJECT\n"
+ "\n"
+ " A() {}\n"
+ "};",
+ format("class A : public QObject {\n"
+ " Q_OBJECT\n"
+ "\n"
+ " A() {\n}\n"
+ "} ;"));
+ // Only if the identifier contains at least 5 characters.
+ EXPECT_EQ("HTTP f();",
+ format("HTTP\nf();"));
+ EXPECT_EQ("MACRO\nf();",
+ format("MACRO\nf();"));
+ // Only if everything is upper case.
+ EXPECT_EQ("class A : public QObject {\n"
+ " Q_Object A() {}\n"
+ "};",
+ format("class A : public QObject {\n"
+ " Q_Object\n"
+ "\n"
+ " A() {\n}\n"
+ "} ;"));
+}
+
TEST_F(FormatTest, MacroCallsWithoutTrailingSemicolon) {
EXPECT_EQ("INITIALIZE_PASS_BEGIN(ScopDetection, \"polly-detect\")\n"
"INITIALIZE_AG_DEPENDENCY(AliasAnalysis)\n"
More information about the cfe-commits
mailing list