summaryrefslogtreecommitdiffstats
path: root/clang/lib/Format
diff options
context:
space:
mode:
authorDaniel Jasper <djasper@google.com>2014-11-21 12:14:12 +0000
committerDaniel Jasper <djasper@google.com>2014-11-21 12:14:12 +0000
commit8354ea84dd5497d2af230b258cb9657b69c82f87 (patch)
treeb599b68c53379de4745300e00315c0a094a179e8 /clang/lib/Format
parentee9af45b1985720f876f8ea14960ed62c9d5e236 (diff)
downloadbcm5719-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.h3
-rw-r--r--clang/lib/Format/TokenAnnotator.cpp7
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,
OpenPOWER on IntegriCloud