diff options
author | Nico Weber <nicolasweber@gmx.de> | 2013-02-10 20:35:35 +0000 |
---|---|---|
committer | Nico Weber <nicolasweber@gmx.de> | 2013-02-10 20:35:35 +0000 |
commit | 372d8dcf15fb860332eace94b05c47783d7dde0f (patch) | |
tree | 4e0cbe9a4d3fa93ab9e02507fc27856988b8ac2e /clang/lib/Format | |
parent | 44bf8158c5973605eb3bf245e225203fb8660b0a (diff) | |
download | bcm5719-llvm-372d8dcf15fb860332eace94b05c47783d7dde0f.tar.gz bcm5719-llvm-372d8dcf15fb860332eace94b05c47783d7dde0f.zip |
Formatter: Initial support for ObjC dictionary literals.
Before:
@{
foo:
bar
}
;
Now:
@{ foo : bar };
parseBracedList() already does the right thing from an UnwrappedLineParser
perspective, so check for "@{" in all loops that process constructs that can
contain expressions and call parseBracedList() if found.
llvm-svn: 174840
Diffstat (limited to 'clang/lib/Format')
-rw-r--r-- | clang/lib/Format/UnwrappedLineParser.cpp | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/clang/lib/Format/UnwrappedLineParser.cpp b/clang/lib/Format/UnwrappedLineParser.cpp index 36307e04873..cb956084e0e 100644 --- a/clang/lib/Format/UnwrappedLineParser.cpp +++ b/clang/lib/Format/UnwrappedLineParser.cpp @@ -188,7 +188,8 @@ bool UnwrappedLineParser::parseLevel(bool HasOpeningBrace) { return Error; } -bool UnwrappedLineParser::parseBlock(bool MustBeDeclaration, unsigned AddLevels) { +bool UnwrappedLineParser::parseBlock(bool MustBeDeclaration, + unsigned AddLevels) { assert(FormatTok.Tok.is(tok::l_brace) && "'{' expected"); nextToken(); @@ -265,6 +266,10 @@ void UnwrappedLineParser::parseStructuralElement() { switch (FormatTok.Tok.getKind()) { case tok::at: nextToken(); + if (FormatTok.Tok.is(tok::l_brace)) { + parseBracedList(); + break; + } switch (FormatTok.Tok.getObjCKeywordID()) { case tok::objc_public: case tok::objc_protected: @@ -344,6 +349,11 @@ void UnwrappedLineParser::parseStructuralElement() { do { ++TokenNumber; switch (FormatTok.Tok.getKind()) { + case tok::at: + nextToken(); + if (FormatTok.Tok.is(tok::l_brace)) + parseBracedList(); + break; case tok::kw_enum: parseEnum(); break; @@ -457,6 +467,11 @@ void UnwrappedLineParser::parseParens() { Line->Level -= 1; break; } + case tok::at: + nextToken(); + if (FormatTok.Tok.is(tok::l_brace)) + parseBracedList(); + break; default: nextToken(); break; |