[clang] [clang-format] Annotate do while while (PR #69707)
https://github.com/HazardyKnusperkeks created https://github.com/llvm/llvm-project/pull/69707 So we can differentiate on the while keyword between a do-while-loop and a normal while-loop. From be24095877e6ddd25e0884ad8aaf3eca4846f38d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Sch=C3=A4pers?= Date: Fri, 20 Oct 2023 13:00:39 +0200 Subject: [PATCH] [clang-format] Annotate do while while So we can differentiate on the while keyword between a do-while-loop and a normal while-loop. --- clang/lib/Format/FormatToken.h| 1 + clang/lib/Format/UnwrappedLineParser.cpp | 2 ++ clang/unittests/Format/TokenAnnotatorTest.cpp | 10 ++ 3 files changed, 13 insertions(+) diff --git a/clang/lib/Format/FormatToken.h b/clang/lib/Format/FormatToken.h index 606e9e790ad833b..acd24f836199da1 100644 --- a/clang/lib/Format/FormatToken.h +++ b/clang/lib/Format/FormatToken.h @@ -67,6 +67,7 @@ namespace format { TYPE(DesignatedInitializerLSquare) \ TYPE(DesignatedInitializerPeriod) \ TYPE(DictLiteral) \ + TYPE(DoWhile) \ TYPE(ElseLBrace) \ TYPE(ElseRBrace) \ TYPE(EnumLBrace) \ diff --git a/clang/lib/Format/UnwrappedLineParser.cpp b/clang/lib/Format/UnwrappedLineParser.cpp index 7bb487d020ea6f7..488d8dc07b1eae3 100644 --- a/clang/lib/Format/UnwrappedLineParser.cpp +++ b/clang/lib/Format/UnwrappedLineParser.cpp @@ -3137,6 +3137,8 @@ void UnwrappedLineParser::parseDoWhile() { return; } + FormatTok->setFinalizedType(TT_DoWhile); + // If in Whitesmiths mode, the line with the while() needs to be indented // to the same level as the block. if (Style.BreakBeforeBraces == FormatStyle::BS_Whitesmiths) diff --git a/clang/unittests/Format/TokenAnnotatorTest.cpp b/clang/unittests/Format/TokenAnnotatorTest.cpp index 4dbe2a532c5fdb2..290d0103bb3cf87 100644 --- a/clang/unittests/Format/TokenAnnotatorTest.cpp +++ b/clang/unittests/Format/TokenAnnotatorTest.cpp @@ -2334,6 +2334,16 @@ TEST_F(TokenAnnotatorTest, UnderstandsControlStatements) { EXPECT_TOKEN(Tokens[5], tok::r_brace, TT_ControlStatementRBrace); } +TEST_F(TokenAnnotatorTest, UnderstandsDoWhile) { + auto Tokens = annotate("do { ++i; } while ( i > 5 );"); + ASSERT_EQ(Tokens.size(), 14u) << Tokens; + EXPECT_TOKEN(Tokens[6], tok::kw_while, TT_DoWhile); + + Tokens = annotate("do ++i; while ( i > 5 );"); + ASSERT_EQ(Tokens.size(), 12u) << Tokens; + EXPECT_TOKEN(Tokens[4], tok::kw_while, TT_DoWhile); +} + } // namespace } // namespace format } // namespace clang ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [clang-format] Annotate do while while (PR #69707)
llvmbot wrote: @llvm/pr-subscribers-clang-format Author: Björn Schäpers (HazardyKnusperkeks) Changes So we can differentiate on the while keyword between a do-while-loop and a normal while-loop. --- Full diff: https://github.com/llvm/llvm-project/pull/69707.diff 3 Files Affected: - (modified) clang/lib/Format/FormatToken.h (+1) - (modified) clang/lib/Format/UnwrappedLineParser.cpp (+2) - (modified) clang/unittests/Format/TokenAnnotatorTest.cpp (+10) ``diff diff --git a/clang/lib/Format/FormatToken.h b/clang/lib/Format/FormatToken.h index 606e9e790ad833b..acd24f836199da1 100644 --- a/clang/lib/Format/FormatToken.h +++ b/clang/lib/Format/FormatToken.h @@ -67,6 +67,7 @@ namespace format { TYPE(DesignatedInitializerLSquare) \ TYPE(DesignatedInitializerPeriod) \ TYPE(DictLiteral) \ + TYPE(DoWhile) \ TYPE(ElseLBrace) \ TYPE(ElseRBrace) \ TYPE(EnumLBrace) \ diff --git a/clang/lib/Format/UnwrappedLineParser.cpp b/clang/lib/Format/UnwrappedLineParser.cpp index 7bb487d020ea6f7..488d8dc07b1eae3 100644 --- a/clang/lib/Format/UnwrappedLineParser.cpp +++ b/clang/lib/Format/UnwrappedLineParser.cpp @@ -3137,6 +3137,8 @@ void UnwrappedLineParser::parseDoWhile() { return; } + FormatTok->setFinalizedType(TT_DoWhile); + // If in Whitesmiths mode, the line with the while() needs to be indented // to the same level as the block. if (Style.BreakBeforeBraces == FormatStyle::BS_Whitesmiths) diff --git a/clang/unittests/Format/TokenAnnotatorTest.cpp b/clang/unittests/Format/TokenAnnotatorTest.cpp index 4dbe2a532c5fdb2..290d0103bb3cf87 100644 --- a/clang/unittests/Format/TokenAnnotatorTest.cpp +++ b/clang/unittests/Format/TokenAnnotatorTest.cpp @@ -2334,6 +2334,16 @@ TEST_F(TokenAnnotatorTest, UnderstandsControlStatements) { EXPECT_TOKEN(Tokens[5], tok::r_brace, TT_ControlStatementRBrace); } +TEST_F(TokenAnnotatorTest, UnderstandsDoWhile) { + auto Tokens = annotate("do { ++i; } while ( i > 5 );"); + ASSERT_EQ(Tokens.size(), 14u) << Tokens; + EXPECT_TOKEN(Tokens[6], tok::kw_while, TT_DoWhile); + + Tokens = annotate("do ++i; while ( i > 5 );"); + ASSERT_EQ(Tokens.size(), 12u) << Tokens; + EXPECT_TOKEN(Tokens[4], tok::kw_while, TT_DoWhile); +} + } // namespace } // namespace format } // namespace clang `` https://github.com/llvm/llvm-project/pull/69707 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [clang-format] Annotate do while while (PR #69707)
https://github.com/owenca approved this pull request. https://github.com/llvm/llvm-project/pull/69707 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [clang-format] Annotate do while while (PR #69707)
https://github.com/HazardyKnusperkeks closed https://github.com/llvm/llvm-project/pull/69707 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits