[PATCH] D80160: [Tooling] Drop leading/trailing whitespace from compile_flags.txt lines

Sam McCall via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon May 18 14:06:18 PDT 2020


sammccall created this revision.
sammccall added a reviewer: kadircet.
Herald added a project: clang.
Herald added a subscriber: cfe-commits.

These files tend to be hand-authored, and people get very confused.
I can't think of any reason that such whitespace would be intended.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D80160

Files:
  clang/lib/Tooling/CompilationDatabase.cpp
  clang/test/Tooling/fixed-database.cpp


Index: clang/test/Tooling/fixed-database.cpp
===================================================================
--- clang/test/Tooling/fixed-database.cpp
+++ clang/test/Tooling/fixed-database.cpp
@@ -3,9 +3,10 @@
 // RUN: cp "%s" "%t/Src/test.cpp"
 // RUN: mkdir -p %t/Include
 // RUN: cp "%S/Inputs/fixed-header.h" "%t/Include/"
+// RUN: echo '# this is a comment' >> %t/compile_flags.txt
 // -I flag is relative to %t (where compile_flags is), not Src/.
 // RUN: echo '-IInclude/' >> %t/compile_flags.txt
-// RUN: echo "-Dklazz=class" >> %t/compile_flags.txt
+// RUN: echo "  -Dklazz=class   " >> %t/compile_flags.txt
 // RUN: echo '-std=c++11' >> %t/compile_flags.txt
 // RUN: clang-check "%t/Src/test.cpp" 2>&1
 // RUN: echo > %t/compile_flags.txt
Index: clang/lib/Tooling/CompilationDatabase.cpp
===================================================================
--- clang/lib/Tooling/CompilationDatabase.cpp
+++ clang/lib/Tooling/CompilationDatabase.cpp
@@ -368,8 +368,14 @@
     ErrorMsg = "Error while opening fixed database: " + Result.message();
     return nullptr;
   }
-  std::vector<std::string> Args{llvm::line_iterator(**File),
-                                llvm::line_iterator()};
+  std::vector<std::string> Args;
+  for (llvm::StringRef Line :
+       llvm::make_range(llvm::line_iterator(**File), llvm::line_iterator())) {
+    // Stray whitespace is almost certainly unintended.
+    Line = Line.trim();
+    if (!Line.empty())
+      Args.push_back(Line.str());
+  }
   return std::make_unique<FixedCompilationDatabase>(
       llvm::sys::path::parent_path(Path), std::move(Args));
 }


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D80160.264716.patch
Type: text/x-patch
Size: 1612 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20200518/92a4c24f/attachment.bin>


More information about the cfe-commits mailing list