[clang] [clang-format] Option to ignore macro definitions (PR #70338)
Owen Pan via cfe-commits
cfe-commits at lists.llvm.org
Wed Nov 22 14:45:49 PST 2023
================
@@ -24153,6 +24153,123 @@ TEST_F(FormatTest, WhitespaceSensitiveMacros) {
verifyNoChange("FOO(String-ized&Messy+But: :Still=Intentional);", Style);
}
+TEST_F(FormatTest, IgnorePPDefinitions) {
+ FormatStyle Style = getLLVMStyle();
+ Style.IgnorePPDefinitions = true;
+
+ verifyNoChange("#define A", Style);
+ verifyNoChange("#define A b", Style);
+ verifyNoChange("#define A ( args )", Style);
+ verifyNoChange("#define A ( args ) = func ( args )", Style);
+
+ verifyNoChange("#define A x:", Style);
+ verifyNoChange("#define A a. b", Style);
+
+ // Surrounded with formatted code.
+ verifyFormat("int a;\n"
+ "#define A a\n"
+ "int a;",
+ "int a ;\n"
+ "#define A a\n"
+ "int a ;",
+ Style);
+
+ // Columns are not broken when a limit is set.
+ Style.ColumnLimit = 10;
+ verifyNoChange("#define A a a a a", Style);
+
+ Style.ColumnLimit = 15;
+ verifyNoChange("#define A //a very long comment", Style);
+ // in the following examples, since second line will not be formtted, it won't
+ // take into considertaion the alignment from the first line. The third line
+ // will follow the second line's alignment.
+ verifyFormat("int aaaaaa; // a\n"
+ "#define A // a\n"
+ "int a; // a",
+ "int aaaaaa; // a\n"
+ "#define A // a\n"
+ "int a; // a",
+ Style);
+
+ Style.ColumnLimit = 0;
+
+ // Multiline definition.
+ verifyNoChange("#define A \\\n"
+ "Line one with spaces . \\\n"
+ " Line two.",
+ Style);
+ verifyNoChange("#define A \\\n"
+ "a a \\\n"
+ "a \\\n"
+ "a",
+ Style);
+ Style.AlignEscapedNewlines = FormatStyle::ENAS_Left;
+ verifyNoChange("#define A \\\n"
+ "a a \\\n"
+ "a \\\n"
+ "a",
+ Style);
+ Style.AlignEscapedNewlines = FormatStyle::ENAS_Right;
+ verifyNoChange("#define A \\\n"
+ "a a \\\n"
+ "a \\\n"
+ "a",
+ Style);
+
+ // Adjust indendations but don't change the definition.
+ Style.IndentPPDirectives = FormatStyle::PPDIS_None;
+ verifyNoChange("#if A\n"
+ "#define A a\n"
+ "#endif",
+ Style);
+ verifyNoChange("#define UNITY 1\n"
+ "#if A\n"
+ "# define A a\\\n"
+ " a a\n"
+ "#endif",
+ Style);
+ verifyFormat("#if A\n"
+ "#define A a\n"
----------------
owenca wrote:
The indentation should _not_ change.
https://github.com/llvm/llvm-project/pull/70338
More information about the cfe-commits
mailing list