Addressed comments
Hi revane, tareqsiraj,
http://llvm-reviews.chandlerc.com/D1837
CHANGE SINCE LAST DIFF
http://llvm-reviews.chandlerc.com/D1837?vs=4675&id=4708#toc
Files:
clang-modernize/Core/Transform.cpp
test/clang-modernize/Compilations/Inputs/compile_commands_relative.json
test/clang-modernize/Compilations/compilation_relative.cpp
test/clang-modernize/Compilations/no_compilation_relative.cpp
Index: clang-modernize/Core/Transform.cpp
===================================================================
--- clang-modernize/Core/Transform.cpp
+++ clang-modernize/Core/Transform.cpp
@@ -94,7 +94,16 @@
}
bool Transform::handleBeginSource(CompilerInstance &CI, StringRef Filename) {
- CurrentSource = Filename;
+ assert(Overrides != 0 && "Subclass transform didn't provide InputState");
+
+ Overrides->applyOverrides(CI.getSourceManager());
+
+ llvm::SmallString<256> FilePath(Filename);
+ llvm::error_code EC = llvm::sys::fs::make_absolute(FilePath);
+ assert(!EC && "File path can't be made absolute");
+ (void) EC;
+
+ CurrentSource = FilePath.c_str();
if (Options().EnableTiming) {
Timings.push_back(std::make_pair(Filename.str(), llvm::TimeRecord()));
Index: test/clang-modernize/Compilations/Inputs/compile_commands_relative.json
===================================================================
--- /dev/null
+++ test/clang-modernize/Compilations/Inputs/compile_commands_relative.json
@@ -0,0 +1,17 @@
+[
+{
+ "directory": "$(path)/a1/",
+ "command": "clang++ -o compilations.o -c compilations.cpp -std=c++11",
+ "file": "compilations.cpp"
+},
+{
+ "directory": "$(path)/a2/",
+ "command": "clang++ -o compilations.o -c compilations.cpp -std=c++11",
+ "file": "compilations.cpp"
+},
+{
+ "directory": "$(path)/a3/",
+ "command": "clang++ -o compilations.o -c compilations.cpp -std=c++11",
+ "file": "compilations.cpp"
+}
+]
Index: test/clang-modernize/Compilations/compilation_relative.cpp
===================================================================
--- /dev/null
+++ test/clang-modernize/Compilations/compilation_relative.cpp
@@ -0,0 +1,25 @@
+// The following block tests:
+// - Relative paths are use in the compilation database.
+// - A compilation database is detected from build path specified by -p and
+// -include was provided.
+
+// Create directory structure
+// a1, a2 and a3 are specified paths for files in the compilation database.
+// RUN: rm -rf %T/CompilationRelative
+// RUN: mkdir -p %T/CompilationRelative
+// RUN: mkdir -p %T/CompilationRelative/a1
+// RUN: mkdir -p %T/CompilationRelative/a2
+// RUN: mkdir -p %T/CompilationRelative/a3
+
+// This test uses a compilation database
+// RUN: sed -e 's#$(path)#%/T/CompilationRelative#g'
%S/Inputs/compile_commands_relative.json >
%T/CompilationRelative/compile_commands.json
+
+// Check that files are tranformed when -p and -include are specified.
+// RUN: cp %S/Inputs/compilations.cpp %T/CompilationRelative/a1
+// RUN: cp %S/Inputs/compilations.cpp %T/CompilationRelative/a2
+// RUN: cp %S/Inputs/compilations.cpp %T/CompilationRelative/a3
+
+// RUN: clang-modernize -use-nullptr -p=%T/CompilationRelative
-include=%T/CompilationRelative/a1,%T/CompilationRelative/a3
+// RUN: diff -b %S/Inputs/compilations_expected.cpp
%T/CompilationRelative/a1/compilations.cpp
+// RUN: not diff -b %S/Inputs/compilations_expected.cpp
%T/CompilationRelative/a2/compilations.cpp
+// RUN: diff -b %S/Inputs/compilations_expected.cpp
%T/CompilationRelative/a3/compilations.cpp
Index: test/clang-modernize/Compilations/no_compilation_relative.cpp
===================================================================
--- /dev/null
+++ test/clang-modernize/Compilations/no_compilation_relative.cpp
@@ -0,0 +1,19 @@
+// The following block tests that files are transformed when specified using
+// relative paths.
+
+// Create directory structure
+// a1, a2 and a3 are specified paths for files in the compilation database.
+// RUN: rm -rf %T/NoCompilationRelative
+// RUN: mkdir -p %T/NoCompilationRelative
+// RUN: mkdir -p %T/NoCompilationRelative/a1
+// RUN: mkdir -p %T/NoCompilationRelative/a2
+// RUN: mkdir -p %T/NoCompilationRelative/a3
+
+// RUN: cp %S/Inputs/compilations.cpp %T/NoCompilationRelative/a1
+// RUN: cp %S/Inputs/compilations.cpp %T/NoCompilationRelative/a2
+// RUN: cp %S/Inputs/compilations.cpp %T/NoCompilationRelative/a3
+// RUN: cd %T
+// RUN: clang-modernize -use-nullptr
./NoCompilationRelative/a1/compilations.cpp
./NoCompilationRelative/a3/compilations.cpp
+// RUN: diff -b %S/Inputs/compilations_expected.cpp
%T/NoCompilationRelative/a1/compilations.cpp
+// RUN: not diff -b %S/Inputs/compilations_expected.cpp
%T/NoCompilationRelative/a2/compilations.cpp
+// RUN: diff -b %S/Inputs/compilations_expected.cpp
%T/NoCompilationRelative/a3/compilations.cpp
Index: clang-modernize/Core/Transform.cpp
===================================================================
--- clang-modernize/Core/Transform.cpp
+++ clang-modernize/Core/Transform.cpp
@@ -94,7 +94,16 @@
}
bool Transform::handleBeginSource(CompilerInstance &CI, StringRef Filename) {
- CurrentSource = Filename;
+ assert(Overrides != 0 && "Subclass transform didn't provide InputState");
+
+ Overrides->applyOverrides(CI.getSourceManager());
+
+ llvm::SmallString<256> FilePath(Filename);
+ llvm::error_code EC = llvm::sys::fs::make_absolute(FilePath);
+ assert(!EC && "File path can't be made absolute");
+ (void) EC;
+
+ CurrentSource = FilePath.c_str();
if (Options().EnableTiming) {
Timings.push_back(std::make_pair(Filename.str(), llvm::TimeRecord()));
Index: test/clang-modernize/Compilations/Inputs/compile_commands_relative.json
===================================================================
--- /dev/null
+++ test/clang-modernize/Compilations/Inputs/compile_commands_relative.json
@@ -0,0 +1,17 @@
+[
+{
+ "directory": "$(path)/a1/",
+ "command": "clang++ -o compilations.o -c compilations.cpp -std=c++11",
+ "file": "compilations.cpp"
+},
+{
+ "directory": "$(path)/a2/",
+ "command": "clang++ -o compilations.o -c compilations.cpp -std=c++11",
+ "file": "compilations.cpp"
+},
+{
+ "directory": "$(path)/a3/",
+ "command": "clang++ -o compilations.o -c compilations.cpp -std=c++11",
+ "file": "compilations.cpp"
+}
+]
Index: test/clang-modernize/Compilations/compilation_relative.cpp
===================================================================
--- /dev/null
+++ test/clang-modernize/Compilations/compilation_relative.cpp
@@ -0,0 +1,25 @@
+// The following block tests:
+// - Relative paths are use in the compilation database.
+// - A compilation database is detected from build path specified by -p and
+// -include was provided.
+
+// Create directory structure
+// a1, a2 and a3 are specified paths for files in the compilation database.
+// RUN: rm -rf %T/CompilationRelative
+// RUN: mkdir -p %T/CompilationRelative
+// RUN: mkdir -p %T/CompilationRelative/a1
+// RUN: mkdir -p %T/CompilationRelative/a2
+// RUN: mkdir -p %T/CompilationRelative/a3
+
+// This test uses a compilation database
+// RUN: sed -e 's#$(path)#%/T/CompilationRelative#g' %S/Inputs/compile_commands_relative.json > %T/CompilationRelative/compile_commands.json
+
+// Check that files are tranformed when -p and -include are specified.
+// RUN: cp %S/Inputs/compilations.cpp %T/CompilationRelative/a1
+// RUN: cp %S/Inputs/compilations.cpp %T/CompilationRelative/a2
+// RUN: cp %S/Inputs/compilations.cpp %T/CompilationRelative/a3
+
+// RUN: clang-modernize -use-nullptr -p=%T/CompilationRelative -include=%T/CompilationRelative/a1,%T/CompilationRelative/a3
+// RUN: diff -b %S/Inputs/compilations_expected.cpp %T/CompilationRelative/a1/compilations.cpp
+// RUN: not diff -b %S/Inputs/compilations_expected.cpp %T/CompilationRelative/a2/compilations.cpp
+// RUN: diff -b %S/Inputs/compilations_expected.cpp %T/CompilationRelative/a3/compilations.cpp
Index: test/clang-modernize/Compilations/no_compilation_relative.cpp
===================================================================
--- /dev/null
+++ test/clang-modernize/Compilations/no_compilation_relative.cpp
@@ -0,0 +1,19 @@
+// The following block tests that files are transformed when specified using
+// relative paths.
+
+// Create directory structure
+// a1, a2 and a3 are specified paths for files in the compilation database.
+// RUN: rm -rf %T/NoCompilationRelative
+// RUN: mkdir -p %T/NoCompilationRelative
+// RUN: mkdir -p %T/NoCompilationRelative/a1
+// RUN: mkdir -p %T/NoCompilationRelative/a2
+// RUN: mkdir -p %T/NoCompilationRelative/a3
+
+// RUN: cp %S/Inputs/compilations.cpp %T/NoCompilationRelative/a1
+// RUN: cp %S/Inputs/compilations.cpp %T/NoCompilationRelative/a2
+// RUN: cp %S/Inputs/compilations.cpp %T/NoCompilationRelative/a3
+// RUN: cd %T
+// RUN: clang-modernize -use-nullptr ./NoCompilationRelative/a1/compilations.cpp ./NoCompilationRelative/a3/compilations.cpp
+// RUN: diff -b %S/Inputs/compilations_expected.cpp %T/NoCompilationRelative/a1/compilations.cpp
+// RUN: not diff -b %S/Inputs/compilations_expected.cpp %T/NoCompilationRelative/a2/compilations.cpp
+// RUN: diff -b %S/Inputs/compilations_expected.cpp %T/NoCompilationRelative/a3/compilations.cpp
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits