Author: Mohamed Emad
Date: 2025-05-01T07:21:50-04:00
New Revision: 212f2456fcde822fad37bfa4e69ced1a51a4c19d

URL: 
https://github.com/llvm/llvm-project/commit/212f2456fcde822fad37bfa4e69ced1a51a4c19d
DIFF: 
https://github.com/llvm/llvm-project/commit/212f2456fcde822fad37bfa4e69ced1a51a4c19d.diff

LOG: [include-cleaner] rename enabled flags to `disable-*` (#132991)

Closes #132983

Added: 
    

Modified: 
    clang-tools-extra/docs/ReleaseNotes.rst
    clang-tools-extra/include-cleaner/test/tool.cpp
    clang-tools-extra/include-cleaner/tool/IncludeCleaner.cpp

Removed: 
    


################################################################################
diff  --git a/clang-tools-extra/docs/ReleaseNotes.rst 
b/clang-tools-extra/docs/ReleaseNotes.rst
index 8f61839af2c80..579fca54924d5 100644
--- a/clang-tools-extra/docs/ReleaseNotes.rst
+++ b/clang-tools-extra/docs/ReleaseNotes.rst
@@ -88,6 +88,14 @@ Improvements to clang-doc
 Improvements to clang-query
 ---------------------------
 
+Improvements to include-cleaner
+-------------------------------
+- Deprecated the ``-insert`` and ``-remove`` command line options, and added
+  the ``-disable-remove`` and ``-disable-insert`` command line options as
+  replacements. The previous command line options were confusing because they
+  did not imply the default state of the option (which is inserts and removes
+  being enabled). The new options are easier to understand the semantics of.
+
 Improvements to clang-tidy
 --------------------------
 

diff  --git a/clang-tools-extra/include-cleaner/test/tool.cpp 
b/clang-tools-extra/include-cleaner/test/tool.cpp
index d72d2317ce2b1..b0a47b5ef0a14 100644
--- a/clang-tools-extra/include-cleaner/test/tool.cpp
+++ b/clang-tools-extra/include-cleaner/test/tool.cpp
@@ -6,11 +6,11 @@ int x = foo();
 //      CHANGE: - "foobar.h"
 // CHANGE-NEXT: + "foo.h"
 
-//         RUN: clang-include-cleaner -remove=0 -print=changes %s -- 
-I%S/Inputs/ | FileCheck --check-prefix=INSERT %s
+//         RUN: clang-include-cleaner -disable-remove -print=changes %s -- 
-I%S/Inputs/ | FileCheck --check-prefix=INSERT %s
 //  INSERT-NOT: - "foobar.h"
 //      INSERT: + "foo.h"
 
-//         RUN: clang-include-cleaner -insert=0 -print=changes %s -- 
-I%S/Inputs/ | FileCheck --check-prefix=REMOVE %s
+//         RUN: clang-include-cleaner -disable-insert -print=changes %s -- 
-I%S/Inputs/ | FileCheck --check-prefix=REMOVE %s
 //      REMOVE: - "foobar.h"
 //  REMOVE-NOT: + "foo.h"
 
@@ -58,3 +58,16 @@ int x = foo();
 //        RUN: FileCheck --match-full-lines --check-prefix=EDIT3 %s < %t.cpp
 //      EDIT3: #include "foo.h"
 //  EDIT3-NOT: {{^}}#include "foobar.h"{{$}}
+
+//        RUN: clang-include-cleaner -insert=false -print=changes %s -- 
-I%S/Inputs/ 2>&1 | \
+//        RUN: FileCheck --check-prefix=DEPRECATED-INSERT %s
+// DEPRECATED-INSERT: warning: '-insert=0' is deprecated in favor of 
'-disable-insert'. The old flag was confusing since it suggested that inserts 
were disabled by default, when they were actually enabled.
+
+//       RUN: clang-include-cleaner -remove=false -print=changes %s -- 
-I%S/Inputs/ 2>&1 | \
+//       RUN: FileCheck --check-prefix=DEPRECATED-REMOVE %s
+// DEPRECATED-REMOVE: warning: '-remove=0' is deprecated in favor of 
'-disable-remove'. The old flag was confusing since it suggested that removes 
were disabled by default, when they were actually enabled.
+
+//       RUN: clang-include-cleaner -insert=false -remove=false -print=changes 
%s -- -I%S/Inputs/ 2>&1 | \
+//       RUN: FileCheck --check-prefix=DEPRECATED-BOTH %s
+// DEPRECATED-BOTH: warning: '-insert=0' is deprecated in favor of 
'-disable-insert'. The old flag was confusing since it suggested that inserts 
were disabled by default, when they were actually enabled.
+// DEPRECATED-BOTH: warning: '-remove=0' is deprecated in favor of 
'-disable-remove'. The old flag was confusing since it suggested that removes 
were disabled by default, when they were actually enabled.

diff  --git a/clang-tools-extra/include-cleaner/tool/IncludeCleaner.cpp 
b/clang-tools-extra/include-cleaner/tool/IncludeCleaner.cpp
index 1d9458ffc4d32..33490de9b0f6c 100644
--- a/clang-tools-extra/include-cleaner/tool/IncludeCleaner.cpp
+++ b/clang-tools-extra/include-cleaner/tool/IncludeCleaner.cpp
@@ -90,19 +90,31 @@ cl::opt<bool> Edit{
     cl::desc("Apply edits to analyzed source files"),
     cl::cat(IncludeCleaner),
 };
-
 cl::opt<bool> Insert{
     "insert",
-    cl::desc("Allow header insertions"),
+    cl::desc(
+        "Allow header insertions (deprecated. Use -disable-insert instead)"),
     cl::init(true),
     cl::cat(IncludeCleaner),
 };
 cl::opt<bool> Remove{
     "remove",
-    cl::desc("Allow header removals"),
+    cl::desc("Allow header removals (deprecated. Use -disable-remove 
instead)"),
     cl::init(true),
     cl::cat(IncludeCleaner),
 };
+cl::opt<bool> DisableInsert{
+    "disable-insert",
+    cl::desc("Disable header insertions"),
+    cl::init(false),
+    cl::cat(IncludeCleaner),
+};
+cl::opt<bool> DisableRemove{
+    "disable-remove",
+    cl::desc("Disable header removals"),
+    cl::init(false),
+    cl::cat(IncludeCleaner),
+};
 
 std::atomic<unsigned> Errors = ATOMIC_VAR_INIT(0);
 
@@ -183,9 +195,26 @@ class Action : public clang::ASTFrontendAction {
     auto Results =
         analyze(AST.Roots, PP.MacroReferences, PP.Includes, &PI,
                 getCompilerInstance().getPreprocessor(), HeaderFilter);
-    if (!Insert)
+
+    if (!Insert) {
+      llvm::errs()
+          << "warning: '-insert=0' is deprecated in favor of "
+             "'-disable-insert'. "
+             "The old flag was confusing since it suggested that inserts "
+             "were disabled by default, when they were actually enabled.\n";
+    }
+
+    if (!Remove) {
+      llvm::errs()
+          << "warning: '-remove=0' is deprecated in favor of "
+             "'-disable-remove'. "
+             "The old flag was confusing since it suggested that removes "
+             "were disabled by default, when they were actually enabled.\n";
+    }
+
+    if (!Insert || DisableInsert)
       Results.Missing.clear();
-    if (!Remove)
+    if (!Remove || DisableRemove)
       Results.Unused.clear();
     std::string Final = fixIncludes(Results, AbsPath, Code, getStyle(AbsPath));
 


        
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to