aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/Format/Format.cpp5
-rw-r--r--unittests/Format/FormatTest.cpp14
2 files changed, 18 insertions, 1 deletions
diff --git a/lib/Format/Format.cpp b/lib/Format/Format.cpp
index 120b54d831..1205c424b1 100644
--- a/lib/Format/Format.cpp
+++ b/lib/Format/Format.cpp
@@ -940,7 +940,10 @@ private:
return false;
if (Left.is(tok::exclaim) || Left.is(tok::tilde))
return false;
- if (Left.is(tok::at) && Right.is(tok::identifier))
+ if (Left.is(tok::at) &&
+ (Right.is(tok::identifier) || Right.is(tok::string_literal) ||
+ Right.is(tok::char_constant) || Right.is(tok::numeric_constant) ||
+ Right.is(tok::l_paren) || Right.is(tok::l_brace)))
return false;
if (Left.is(tok::less) || Right.is(tok::greater) || Right.is(tok::less))
return false;
diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp
index 2bd094bb83..d5f74d3daa 100644
--- a/unittests/Format/FormatTest.cpp
+++ b/unittests/Format/FormatTest.cpp
@@ -1137,6 +1137,20 @@ TEST_F(FormatTest, ObjCAt) {
verifyFormat("@throw");
verifyFormat("@try");
+ // FIXME: Make the uncommented lines below pass.
+ verifyFormat("@\"String\"");
+ verifyFormat("@1");
+ //verifyFormat("@+4.8");
+ //verifyFormat("@-4");
+ verifyFormat("@1LL");
+ verifyFormat("@.5");
+ verifyFormat("@'c'");
+ verifyFormat("@true");
+ verifyFormat("NSNumber *smallestInt = @(-INT_MAX - 1);");
+ verifyFormat("@[");
+ verifyFormat("@{");
+
+
EXPECT_EQ("@interface", format("@ interface"));
// The precise formatting of this doesn't matter, nobody writes code like