diff options
-rw-r--r-- | lib/Format/Format.cpp | 2 | ||||
-rw-r--r-- | lib/Format/UnwrappedLineParser.cpp | 5 | ||||
-rw-r--r-- | test/Index/comment-objc-decls.m | 2 | ||||
-rw-r--r-- | unittests/Format/FormatTest.cpp | 8 |
4 files changed, 16 insertions, 1 deletions
diff --git a/lib/Format/Format.cpp b/lib/Format/Format.cpp index e271ba2e13..beea48e9a3 100644 --- a/lib/Format/Format.cpp +++ b/lib/Format/Format.cpp @@ -273,6 +273,7 @@ private: void addTokenToState(bool Newline, bool DryRun, IndentState &State) { const AnnotatedToken &Current = *State.NextToken; const AnnotatedToken &Previous = *State.NextToken->Parent; + assert(State.Indent.size()); unsigned ParenLevel = State.Indent.size() - 1; if (Newline) { @@ -357,6 +358,7 @@ private: /// accordingly. void moveStateToNextToken(IndentState &State) { const AnnotatedToken &Current = *State.NextToken; + assert(State.Indent.size()); unsigned ParenLevel = State.Indent.size() - 1; if (Current.is(tok::lessless) && State.FirstLessLess[ParenLevel] == 0) diff --git a/lib/Format/UnwrappedLineParser.cpp b/lib/Format/UnwrappedLineParser.cpp index c049ac607d..9b2a1e90e1 100644 --- a/lib/Format/UnwrappedLineParser.cpp +++ b/lib/Format/UnwrappedLineParser.cpp @@ -215,6 +215,11 @@ void UnwrappedLineParser::parseStructuralElement() { return parseObjCProtocol(); case tok::objc_end: return; // Handled by the caller. + case tok::objc_optional: + case tok::objc_required: + nextToken(); + addUnwrappedLine(); + return; default: break; } diff --git a/test/Index/comment-objc-decls.m b/test/Index/comment-objc-decls.m index c61d99598d..0e3c072121 100644 --- a/test/Index/comment-objc-decls.m +++ b/test/Index/comment-objc-decls.m @@ -32,7 +32,7 @@ @end // CHECK: <Declaration>@protocol MyProto\n@end</Declaration> // CHECK: <Declaration>- (unsigned int)MethodMyProto:(id)anObject inRange:(unsigned int)range;</Declaration> -// CHECK: <Declaration>@optional\n @property(readwrite, copy, atomic) id PropertyMyProto;</Declaration> +// CHECK: <Declaration>@optional\n@property(readwrite, copy, atomic) id PropertyMyProto;</Declaration> // CHECK: <Declaration>+ (id)ClassMethodMyProto;</Declaration> /** diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp index b536e012eb..9ed6b5f0f9 100644 --- a/unittests/Format/FormatTest.cpp +++ b/unittests/Format/FormatTest.cpp @@ -1340,6 +1340,14 @@ TEST_F(FormatTest, FormatObjCProtocol) { "@end\n" "@protocol Bar\n" "@end"); + + verifyFormat("@protocol myProtocol\n" + "- (void)mandatoryWithInt:(int)i;\n" + "@optional\n" + "- (void)optional;\n" + "@required\n" + "- (void)required;\n" + "@end\n"); } TEST_F(FormatTest, ObjCAt) { |