Hi djasper,
Support Java lambda expressions
http://reviews.llvm.org/D6350
Files:
lib/Format/TokenAnnotator.cpp
unittests/Format/FormatTestJava.cpp
Index: lib/Format/TokenAnnotator.cpp
===================================================================
--- lib/Format/TokenAnnotator.cpp
+++ lib/Format/TokenAnnotator.cpp
@@ -1750,6 +1750,9 @@
return Right.Type == TT_TemplateCloser && Left.Type == TT_TemplateCloser &&
(Style.Standard != FormatStyle::LS_Cpp11 || Style.SpacesInAngles);
}
+ if (Style.Language == FormatStyle::LK_Java &&
+ (Right.is(tok::arrow) || Left.is(tok::arrow)))
+ return true;
if (Right.isOneOf(tok::arrow, tok::period, tok::arrowstar, tok::periodstar) ||
Left.isOneOf(tok::arrow, tok::period, tok::arrowstar, tok::periodstar))
return false;
Index: unittests/Format/FormatTestJava.cpp
===================================================================
--- unittests/Format/FormatTestJava.cpp
+++ unittests/Format/FormatTestJava.cpp
@@ -317,5 +317,25 @@
getStyleWithColumns(40));
}
+TEST_F(FormatTestJava, Lambdas) {
+ verifyFormat("Consumer<Integer> myConsumer = (y) -> {\n"
+ " System.out.println(\"x = \" + x); // Statement A\n"
+ " System.out.println(\"y = \" + y);\n"
+ "}");
+ verifyFormat("String s = invoke(() -> \"done\");");
+ verifyFormat("IntegerMath addition = (a, b) -> a + b");
+ verifyFormat("roster.stream()\n"
+ " .filter(p -> p.getGender() == Person.Sex.MALE && p.getAge() >= 18 && p.getAge() <= 25)\n"
+ " .map(p -> p.getEmailAddress())\n"
+ " .forEach(email -> System.out.println(email));");
+ verifyFormat("roster.stream()\n"
+ " .filter(p -> {\n"
+ " System.out.println(\"foo\");\n"
+ " return true;\n"
+ " })\n"
+ " .map(p -> p.getEmailAddress())\n"
+ " .forEach(email -> System.out.println(email));");
+}
+
} // end namespace tooling
} // end namespace clang
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits