diff options
author | Dmitry Polukhin <34227995+dmpolukhin@users.noreply.github.com> | 2024-02-05 10:00:17 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-05 10:00:17 +0000 |
commit | 95403b42da0de500f4f86add7a60b0daf8ec98d0 (patch) | |
tree | 71771df0936beffe87d71a36ac89c3abb6b645bb /clang-tools-extra | |
parent | 3e230bb6e1a2668e920ee496121e5e40baeb4552 (diff) | |
download | llvm-95403b42da0de500f4f86add7a60b0daf8ec98d0.zip llvm-95403b42da0de500f4f86add7a60b0daf8ec98d0.tar.gz llvm-95403b42da0de500f4f86add7a60b0daf8ec98d0.tar.bz2 |
Apply format only if --format is specified (#79466)
clang-apply-replacements used to apply format even without --format is
specified. This because, methods like createReplacementsForHeaders only
takes the Spec.Style and would re-order the headers even when it was not
requested. The fix is to set up Spec.Style only if --format is provided.
Also added note to ReleaseNotes.rst
Based on https://github.com/llvm/llvm-project/pull/70801
---------
Co-authored-by: Kugan <34810920+kuganv@users.noreply.github.com>
Co-authored-by: Aaron Ballman <aaron@aaronballman.com>
Diffstat (limited to 'clang-tools-extra')
7 files changed, 69 insertions, 1 deletions
diff --git a/clang-tools-extra/clang-apply-replacements/tool/ClangApplyReplacementsMain.cpp b/clang-tools-extra/clang-apply-replacements/tool/ClangApplyReplacementsMain.cpp index 9331898..68b5743 100644 --- a/clang-tools-extra/clang-apply-replacements/tool/ClangApplyReplacementsMain.cpp +++ b/clang-tools-extra/clang-apply-replacements/tool/ClangApplyReplacementsMain.cpp @@ -141,9 +141,9 @@ int main(int argc, char **argv) { tooling::ApplyChangesSpec Spec; Spec.Cleanup = true; - Spec.Style = FormatStyle; Spec.Format = DoFormat ? tooling::ApplyChangesSpec::kAll : tooling::ApplyChangesSpec::kNone; + Spec.Style = DoFormat ? FormatStyle : format::getNoStyle(); for (const auto &FileChange : Changes) { FileEntryRef Entry = FileChange.first; diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst index 9e819ea..16309bd 100644 --- a/clang-tools-extra/docs/ReleaseNotes.rst +++ b/clang-tools-extra/docs/ReleaseNotes.rst @@ -153,9 +153,16 @@ Changes in existing checks Removed checks ^^^^^^^^^^^^^^ +Miscellaneous +^^^^^^^^^^^^^ + - Removed `cert-dcl21-cpp`, which was deprecated since :program:`clang-tidy` 17, since the rule DCL21-CPP has been removed from the CERT guidelines. +- Fixed incorrect formatting in ``clang-apply-repalcements`` when no ``--format`` + option is specified. Now ``clang-apply-replacements`` applies formatting only with + the option. + Improvements to include-fixer ----------------------------- diff --git a/clang-tools-extra/test/clang-apply-replacements/Inputs/format_header/no.cpp b/clang-tools-extra/test/clang-apply-replacements/Inputs/format_header/no.cpp new file mode 100644 index 0000000..140e266 --- /dev/null +++ b/clang-tools-extra/test/clang-apply-replacements/Inputs/format_header/no.cpp @@ -0,0 +1,10 @@ +#include <string> +// CHECK: #include <string> +// CHECK-NEXT: #include <memory> +// CHECK-NEXT: #include "bar.h" +#include <memory> +#include "foo.h" +#include "bar.h" + +void foo() { +} diff --git a/clang-tools-extra/test/clang-apply-replacements/Inputs/format_header/no.yaml b/clang-tools-extra/test/clang-apply-replacements/Inputs/format_header/no.yaml new file mode 100644 index 0000000..172b5ee --- /dev/null +++ b/clang-tools-extra/test/clang-apply-replacements/Inputs/format_header/no.yaml @@ -0,0 +1,14 @@ +--- +MainSourceFile: no.cpp +Diagnostics: + - DiagnosticName: test-header-format + DiagnosticMessage: + Message: Fix + FilePath: $(path)/no.cpp + FileOffset: 36 + Replacements: + - FilePath: $(path)/no.cpp + Offset: 36 + Length: 17 + ReplacementText: "" +... diff --git a/clang-tools-extra/test/clang-apply-replacements/Inputs/format_header/yes.cpp b/clang-tools-extra/test/clang-apply-replacements/Inputs/format_header/yes.cpp new file mode 100644 index 0000000..20e6b90 --- /dev/null +++ b/clang-tools-extra/test/clang-apply-replacements/Inputs/format_header/yes.cpp @@ -0,0 +1,10 @@ +#include <string> +// CHECK: #include "bar.h" +// CHECK-NEXT: #include <memory> +// CHECK-NEXT: #include <string> +#include <memory> +#include "foo.h" +#include "bar.h" + +void foo() { +} diff --git a/clang-tools-extra/test/clang-apply-replacements/Inputs/format_header/yes.yaml b/clang-tools-extra/test/clang-apply-replacements/Inputs/format_header/yes.yaml new file mode 100644 index 0000000..723c4c5 --- /dev/null +++ b/clang-tools-extra/test/clang-apply-replacements/Inputs/format_header/yes.yaml @@ -0,0 +1,14 @@ +--- +MainSourceFile: yes.cpp +Diagnostics: + - DiagnosticName: test-header-format + DiagnosticMessage: + Message: Fix + FilePath: $(path)/yes.cpp + FileOffset: 36 + Replacements: + - FilePath: $(path)/yes.cpp + Offset: 36 + Length: 17 + ReplacementText: "" +... diff --git a/clang-tools-extra/test/clang-apply-replacements/format-header.cpp b/clang-tools-extra/test/clang-apply-replacements/format-header.cpp new file mode 100644 index 0000000..6a221c4 --- /dev/null +++ b/clang-tools-extra/test/clang-apply-replacements/format-header.cpp @@ -0,0 +1,13 @@ +// RUN: mkdir -p %T/Inputs/format_header_yes +// RUN: mkdir -p %T/Inputs/format_header_no +// +// +// RUN: grep -Ev "// *[A-Z-]+:" %S/Inputs/format_header/yes.cpp > %T/Inputs/format_header_yes/yes.cpp +// RUN: grep -Ev "// *[A-Z-]+:" %S/Inputs/format_header/no.cpp > %T/Inputs/format_header_no/no.cpp +// RUN: sed "s#\$(path)#%/T/Inputs/format_header_yes#" %S/Inputs/format_header/yes.yaml > %T/Inputs/format_header_yes/yes.yaml +// RUN: sed "s#\$(path)#%/T/Inputs/format_header_no#" %S/Inputs/format_header/no.yaml > %T/Inputs/format_header_no/no.yaml +// RUN: clang-apply-replacements -format -style="{BasedOnStyle: llvm, SortIncludes: CaseSensitive}" %T/Inputs/format_header_yes +// RUN: clang-apply-replacements %T/Inputs/format_header_no +// RUN: FileCheck --strict-whitespace -input-file=%T/Inputs/format_header_yes/yes.cpp %S/Inputs/format_header/yes.cpp +// RUN: FileCheck --strict-whitespace -input-file=%T/Inputs/format_header_no/no.cpp %S/Inputs/format_header/no.cpp +// |