diff options
author | Daniel Jasper <djasper@google.com> | 2014-11-21 12:14:12 +0000 |
---|---|---|
committer | Daniel Jasper <djasper@google.com> | 2014-11-21 12:14:12 +0000 |
commit | 8354ea84dd5497d2af230b258cb9657b69c82f87 (patch) | |
tree | b599b68c53379de4745300e00315c0a094a179e8 /clang/lib/Format | |
parent | ee9af45b1985720f876f8ea14960ed62c9d5e236 (diff) | |
download | bcm5719-llvm-8354ea84dd5497d2af230b258cb9657b69c82f87.tar.gz bcm5719-llvm-8354ea84dd5497d2af230b258cb9657b69c82f87.zip |
clang-format: [Java] Basic lambda support.
llvm-svn: 222524
Diffstat (limited to 'clang/lib/Format')
-rw-r--r-- | clang/lib/Format/FormatToken.h | 3 | ||||
-rw-r--r-- | clang/lib/Format/TokenAnnotator.cpp | 7 |
2 files changed, 10 insertions, 0 deletions
diff --git a/clang/lib/Format/FormatToken.h b/clang/lib/Format/FormatToken.h index 0ef563b73a7..7ced6eac409 100644 --- a/clang/lib/Format/FormatToken.h +++ b/clang/lib/Format/FormatToken.h @@ -48,6 +48,7 @@ enum TokenType { TT_InheritanceColon, TT_InlineASMColon, TT_JavaAnnotation, + TT_LambdaArrow, TT_LambdaLSquare, TT_LeadingJavaAnnotation, TT_LineComment, @@ -271,6 +272,8 @@ struct FormatToken { bool is(tok::TokenKind Kind) const { return Tok.is(Kind); } + bool is(TokenType TT) const { return Type == TT; } + bool is(const IdentifierInfo *II) const { return II && II == Tok.getIdentifierInfo(); } diff --git a/clang/lib/Format/TokenAnnotator.cpp b/clang/lib/Format/TokenAnnotator.cpp index 1afdb19b29d..6d9006be30b 100644 --- a/clang/lib/Format/TokenAnnotator.cpp +++ b/clang/lib/Format/TokenAnnotator.cpp @@ -786,6 +786,9 @@ private: Current.Type = TT_StartOfName; } else if (Current.is(tok::kw_auto)) { AutoFound = true; + } else if (Current.is(tok::arrow) && + Style.Language == FormatStyle::LK_Java) { + Current.Type = TT_LambdaArrow; } else if (Current.is(tok::arrow) && AutoFound && Line.MustBeDeclaration && Current.NestingLevel == 0) { Current.Type = TT_TrailingReturnArrow; @@ -1167,6 +1170,8 @@ private: else if (NextNonComment && NextNonComment->is(tok::colon) && NextNonComment->Type == TT_DictLiteral) return prec::Comma; + else if (Current->is(TT_LambdaArrow)) + return prec::Comma; else if (Current->is(tok::semi) || Current->Type == TT_InlineASMColon || Current->Type == TT_SelectorName || (Current->is(tok::comment) && NextNonComment && @@ -1701,6 +1706,8 @@ bool TokenAnnotator::spaceRequiredBefore(const AnnotatedLine &Line, if (Left.is(Keywords.kw_var)) return true; } else if (Style.Language == FormatStyle::LK_Java) { + if (Left.is(TT_LambdaArrow) || Right.is(TT_LambdaArrow)) + return true; if (Left.is(Keywords.kw_synchronized) && Right.is(tok::l_paren)) return Style.SpaceBeforeParens != FormatStyle::SBPO_Never; if (Left.isOneOf(tok::kw_static, tok::kw_public, tok::kw_private, |