forked from OSchip/llvm-project
[clang-format] Revert e9e6e3b34a
Reverting {D92753} due to issues with #pragma indentation in #ifdef/endif structure
This commit is contained in:
parent
0b84afa5fc
commit
9af03864df
|
@ -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
|
||||
|
||||
|
|
|
@ -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 &&
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -557,7 +557,6 @@ template <> struct MappingTraits<FormatStyle> {
|
|||
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;
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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 ||
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue