diff --git a/clang/docs/ClangFormatStyleOptions.rst b/clang/docs/ClangFormatStyleOptions.rst index c58bb1af7ae6..8eee6187d0c6 100644 --- a/clang/docs/ClangFormatStyleOptions.rst +++ b/clang/docs/ClangFormatStyleOptions.rst @@ -2181,30 +2181,6 @@ the configuration (without a prefix: ``Auto``). -**IndentPragmas** (``bool``) - Indent pragmas - - When ``false``, pragmas are flushed left or follow IndentPPDirectives. - When ``true``, pragmas are indented to the current scope level. - - .. code-block:: c++ - - false: true: - #pragma once vs #pragma once - void foo() { void foo() { - #pragma omp simd #pragma omp simd - for (int i=0;i<10;i++) { for (int i=0;i<10;i++) { - #pragma omp simd #pragma omp simd - for (int i=0;i<10;i++) { for (int i=0;i<10;i++) { - } } - #if 1 #if 1 - #pragma omp simd #pragma omp simd - for (int i=0;i<10;i++) { for (int i=0;i<10;i++) { - } } - #endif #endif - } } - } } - **IndentRequires** (``bool``) Indent the requires clause in a template diff --git a/clang/include/clang/Format/Format.h b/clang/include/clang/Format/Format.h index c6a9818a8940..6b3fb8164a28 100644 --- a/clang/include/clang/Format/Format.h +++ b/clang/include/clang/Format/Format.h @@ -1792,29 +1792,6 @@ struct FormatStyle { /// \endcode bool IndentGotoLabels; - /// Indent pragmas - /// - /// When ``false``, pragmas are flushed left or follow IndentPPDirectives. - /// When ``true``, pragmas are indented to the current scope level. - /// \code - /// false: true: - /// #pragma once vs #pragma once - /// void foo() { void foo() { - /// #pragma omp simd #pragma omp simd - /// for (int i=0;i<10;i++) { for (int i=0;i<10;i++) { - /// #pragma omp simd #pragma omp simd - /// for (int i=0;i<10;i++) { for (int i=0;i<10;i++) { - /// } } - /// #if 1 #if 1 - /// #pragma omp simd #pragma omp simd - /// for (int i=0;i<10;i++) { for (int i=0;i<10;i++) { - /// } } - /// #endif #endif - /// } } - /// } } - /// \endcode - bool IndentPragmas; - /// Options for indenting preprocessor directives. enum PPDirectiveIndentStyle : unsigned char { /// Does not indent any directives. @@ -2790,7 +2767,6 @@ struct FormatStyle { IndentCaseLabels == R.IndentCaseLabels && IndentCaseBlocks == R.IndentCaseBlocks && IndentGotoLabels == R.IndentGotoLabels && - IndentPragmas == R.IndentPragmas && IndentPPDirectives == R.IndentPPDirectives && IndentExternBlock == R.IndentExternBlock && IndentRequires == R.IndentRequires && IndentWidth == R.IndentWidth && diff --git a/clang/lib/Format/ContinuationIndenter.cpp b/clang/lib/Format/ContinuationIndenter.cpp index 9e15c87509ac..9db42b6c4a70 100644 --- a/clang/lib/Format/ContinuationIndenter.cpp +++ b/clang/lib/Format/ContinuationIndenter.cpp @@ -589,12 +589,6 @@ void ContinuationIndenter::addTokenOnCurrentLine(LineState &State, bool DryRun, State.Line->Type == LT_ImportStatement)) { Spaces += State.FirstIndent; - bool isPragmaLine = - State.Line->First->startsSequence(tok::hash, tok::pp_pragma); - // If indenting pragmas remove the extra space for the #. - if (Style.IndentPragmas && isPragmaLine) - Spaces--; - // For preprocessor indent with tabs, State.Column will be 1 because of the // hash. This causes second-level indents onward to have an extra space // after the tabs. We avoid this misalignment by subtracting 1 from the diff --git a/clang/lib/Format/Format.cpp b/clang/lib/Format/Format.cpp index fc62a3419d48..1207ac2dcc2b 100644 --- a/clang/lib/Format/Format.cpp +++ b/clang/lib/Format/Format.cpp @@ -557,7 +557,6 @@ template <> struct MappingTraits { IO.mapOptional("IndentCaseLabels", Style.IndentCaseLabels); IO.mapOptional("IndentCaseBlocks", Style.IndentCaseBlocks); IO.mapOptional("IndentGotoLabels", Style.IndentGotoLabels); - IO.mapOptional("IndentPragmas", Style.IndentPragmas); IO.mapOptional("IndentPPDirectives", Style.IndentPPDirectives); IO.mapOptional("IndentExternBlock", Style.IndentExternBlock); IO.mapOptional("IndentRequires", Style.IndentRequires); @@ -926,7 +925,6 @@ FormatStyle getLLVMStyle(FormatStyle::LanguageKind Language) { LLVMStyle.IndentCaseLabels = false; LLVMStyle.IndentCaseBlocks = false; LLVMStyle.IndentGotoLabels = true; - LLVMStyle.IndentPragmas = false; LLVMStyle.IndentPPDirectives = FormatStyle::PPDIS_None; LLVMStyle.IndentRequires = false; LLVMStyle.IndentWrappedFunctionNames = false; diff --git a/clang/lib/Format/UnwrappedLineFormatter.cpp b/clang/lib/Format/UnwrappedLineFormatter.cpp index e39ee26950bc..d8f718306a45 100644 --- a/clang/lib/Format/UnwrappedLineFormatter.cpp +++ b/clang/lib/Format/UnwrappedLineFormatter.cpp @@ -1237,21 +1237,10 @@ void UnwrappedLineFormatter::formatFirstToken( } // Preprocessor directives get indented before the hash only if specified - if (Line.Type == LT_PreprocessorDirective || - Line.Type == LT_ImportStatement) { - switch (Style.IndentPPDirectives) { - case FormatStyle::PPDIS_AfterHash: - Indent = 0; - break; - case FormatStyle::PPDIS_None: - case FormatStyle::PPDIS_BeforeHash: { - // If we want to indent pragmas. - bool isPragmaLine = RootToken.startsSequence(tok::hash, tok::pp_pragma); - if (!Style.IndentPragmas && isPragmaLine) - Indent = 0; - } break; - } - } + if (Style.IndentPPDirectives != FormatStyle::PPDIS_BeforeHash && + (Line.Type == LT_PreprocessorDirective || + Line.Type == LT_ImportStatement)) + Indent = 0; Whitespaces->replaceWhitespace(RootToken, Newlines, Indent, Indent, /*IsAligned=*/false, diff --git a/clang/lib/Format/UnwrappedLineParser.cpp b/clang/lib/Format/UnwrappedLineParser.cpp index 99b8c28dca2b..f689a6361a3a 100644 --- a/clang/lib/Format/UnwrappedLineParser.cpp +++ b/clang/lib/Format/UnwrappedLineParser.cpp @@ -714,7 +714,7 @@ void UnwrappedLineParser::parseChildBlock() { nextToken(); } -void UnwrappedLineParser::parsePPDirective(unsigned Level) { +void UnwrappedLineParser::parsePPDirective() { assert(FormatTok->Tok.is(tok::hash) && "'#' expected"); ScopedMacroState MacroState(*Line, Tokens, FormatTok); @@ -745,17 +745,6 @@ void UnwrappedLineParser::parsePPDirective(unsigned Level) { case tok::pp_endif: parsePPEndIf(); break; - case tok::pp_pragma: { - bool IndentPPDirectives = - Style.IndentPPDirectives != FormatStyle::PPDIS_None; - unsigned CurrentLevel = Line->Level; - Line->Level = - Style.IndentPragmas - ? (IndentPPDirectives ? (Level - (PPBranchLevel + 1)) : Level) - : CurrentLevel; - parsePPUnknown(); - Line->Level = CurrentLevel; - } break; default: parsePPUnknown(); break; @@ -3184,7 +3173,7 @@ void UnwrappedLineParser::readToken(int LevelDifference) { PPBranchLevel > 0) Line->Level += PPBranchLevel; flushComments(isOnNewLine(*FormatTok)); - parsePPDirective(Line->Level); + parsePPDirective(); } while (FormatTok->getType() == TT_ConflictStart || FormatTok->getType() == TT_ConflictEnd || diff --git a/clang/lib/Format/UnwrappedLineParser.h b/clang/lib/Format/UnwrappedLineParser.h index 30604c037986..02b328cb72de 100644 --- a/clang/lib/Format/UnwrappedLineParser.h +++ b/clang/lib/Format/UnwrappedLineParser.h @@ -88,7 +88,7 @@ private: void parseBlock(bool MustBeDeclaration, bool AddLevel = true, bool MunchSemi = true); void parseChildBlock(); - void parsePPDirective(unsigned Level); + void parsePPDirective(); void parsePPDefine(); void parsePPIf(bool IfDef); void parsePPElIf(); diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp index bdf4abb26c7e..acfd229e200b 100644 --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/unittests/Format/FormatTest.cpp @@ -14282,7 +14282,6 @@ TEST_F(FormatTest, ParsesConfigurationBools) { CHECK_PARSE_BOOL(IndentCaseLabels); CHECK_PARSE_BOOL(IndentCaseBlocks); CHECK_PARSE_BOOL(IndentGotoLabels); - CHECK_PARSE_BOOL(IndentPragmas); CHECK_PARSE_BOOL(IndentRequires); CHECK_PARSE_BOOL(IndentWrappedFunctionNames); CHECK_PARSE_BOOL(KeepEmptyLinesAtTheStartOfBlocks); @@ -17739,129 +17738,6 @@ TEST_F(FormatTest, ConceptsAndRequires) { "struct constant;", Style); } - -TEST_F(FormatTest, IndentPragmas) { - FormatStyle Style = getLLVMStyle(); - Style.IndentPPDirectives = FormatStyle::PPDIS_None; - - Style.IndentPragmas = false; - verifyFormat("#pragma once", Style); - verifyFormat("#pragma omp simd\n" - "for (int i = 0; i < 10; i++) {\n" - "}", - Style); - verifyFormat("void foo() {\n" - "#pragma omp simd\n" - " for (int i = 0; i < 10; i++) {\n" - " }\n" - "}", - Style); - verifyFormat("void foo() {\n" - "// outer loop\n" - "#pragma omp simd\n" - " for (int k = 0; k < 10; k++) {\n" - "// inner loop\n" - "#pragma omp simd\n" - " for (int j = 0; j < 10; j++) {\n" - " }\n" - " }\n" - "}", - Style); - - verifyFormat("void foo() {\n" - "// outer loop\n" - "#if 1\n" - "#pragma omp simd\n" - " for (int k = 0; k < 10; k++) {\n" - "// inner loop\n" - "#pragma omp simd\n" - " for (int j = 0; j < 10; j++) {\n" - " }\n" - " }\n" - "#endif\n" - "}", - Style); - - Style.IndentPragmas = true; - verifyFormat("#pragma once", Style); - verifyFormat("#pragma omp simd\n" - "for (int i = 0; i < 10; i++) {\n" - "}", - Style); - verifyFormat("void foo() {\n" - " #pragma omp simd\n" - " for (int i = 0; i < 10; i++) {\n" - " }\n" - "}", - Style); - verifyFormat("void foo() {\n" - " #pragma omp simd\n" - " for (int i = 0; i < 10; i++) {\n" - " #pragma omp simd\n" - " for (int j = 0; j < 10; j++) {\n" - " }\n" - " }\n" - "}", - Style); - - verifyFormat("void foo() {\n" - " #pragma omp simd\n" - " for (...) {\n" - " #pragma omp simd\n" - " for (...) {\n" - " }\n" - " }\n" - "}", - Style); - - Style.IndentPPDirectives = FormatStyle::PPDIS_AfterHash; - - verifyFormat("void foo() {\n" - "# pragma omp simd\n" - " for (int i = 0; i < 10; i++) {\n" - "# pragma omp simd\n" - " for (int j = 0; j < 10; j++) {\n" - " }\n" - " }\n" - "}", - Style); - - verifyFormat("void foo() {\n" - "#if 1\n" - "# pragma omp simd\n" - " for (int k = 0; k < 10; k++) {\n" - "# pragma omp simd\n" - " for (int j = 0; j < 10; j++) {\n" - " }\n" - " }\n" - "#endif\n" - "}", - Style); - - Style.IndentPPDirectives = FormatStyle::PPDIS_BeforeHash; - EXPECT_EQ("void foo() {\n" - "#if 1\n" - " #pragma omp simd\n" - " for (int k = 0; k < 10; k++) {\n" - " #pragma omp simd\n" - " for (int j = 0; j < 10; j++) {\n" - " }\n" - " }\n" - "#endif\n" - "}", - format("void foo() {\n" - "#if 1\n" - " #pragma omp simd\n" - " for (int k = 0; k < 10; k++) {\n" - " #pragma omp simd\n" - " for (int j = 0; j < 10; j++) {\n" - " }\n" - " }\n" - "#endif\n" - "}", - Style)); -} - } // namespace } // namespace format } // namespace clang