diff options
author | Manuel Klimek <klimek@google.com> | 2013-01-22 16:31:55 +0000 |
---|---|---|
committer | Manuel Klimek <klimek@google.com> | 2013-01-22 16:31:55 +0000 |
commit | f92f7bc5406d9d81779a4d6466d6eef1d01079d7 (patch) | |
tree | 790f24dd906a7db34358d9e1f57fd44bb9a45e5b /clang/unittests/Format/FormatTest.cpp | |
parent | 58ad41b563750a0df8f2a9cfb245713f4145db36 (diff) | |
download | bcm5719-llvm-f92f7bc5406d9d81779a4d6466d6eef1d01079d7.tar.gz bcm5719-llvm-f92f7bc5406d9d81779a4d6466d6eef1d01079d7.zip |
Implements more principled comment parsing.
Changing nextToken() in the UnwrappedLineParser to get the next
non-comment token. This allows us to correctly layout a whole class of
snippets, like:
if /* */(/* */ a /* */) /* */
f() /* */; /* */
else /* */
g();
Fixes a bug in the formatter where we would assume there is a previous
non-comment token.
Also adds the indent level of an unwrapped line to the debug output in
the parser.
llvm-svn: 173168
Diffstat (limited to 'clang/unittests/Format/FormatTest.cpp')
-rw-r--r-- | clang/unittests/Format/FormatTest.cpp | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp index 201a08bb5f0..b0f0fdba360 100644 --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/unittests/Format/FormatTest.cpp @@ -1625,6 +1625,47 @@ TEST_F(FormatTest, MergeHandlingInTheFaceOfPreprocessorDirectives) { " if (true) continue;", ShortMergedIf); } +TEST_F(FormatTest, BlockCommentsInControlLoops) { + verifyFormat("if (0) /* a comment in a strange place */ {\n" + " f();\n" + "}"); + verifyFormat("if (0) /* a comment in a strange place */ {\n" + " f();\n" + "} /* another comment */ else /* comment #3 */ {\n" + " g();\n" + "}"); + verifyFormat("while (0) /* a comment in a strange place */ {\n" + " f();\n" + "}"); + verifyFormat("for (;;) /* a comment in a strange place */ {\n" + " f();\n" + "}"); + verifyFormat("do /* a comment in a strange place */ {\n" + " f();\n" + "} /* another comment */ while (0);"); +} + +TEST_F(FormatTest, BlockComments) { + EXPECT_EQ("/* */ /* */ /* */\n/* */ /* */ /* */", + format("/* *//* */ /* */\n/* *//* */ /* */")); + EXPECT_EQ("/* */ a /* */ b;", + format(" /* */ a/* */ b;")); + EXPECT_EQ("#define A /* */\\\n" + " b\n" + "/* */\n" + "someCall(\n" + " parameter);", + format("#define A /* */ b\n" + "/* */\n" + "someCall(parameter);", getLLVMStyleWithColumns(15))); + + EXPECT_EQ("#define A\n" + "/* */ someCall(\n" + " parameter);", + format("#define A\n" + "/* */someCall(parameter);", getLLVMStyleWithColumns(15))); +} + //===----------------------------------------------------------------------===// // Objective-C tests. //===----------------------------------------------------------------------===// |