From d6009ffb8e6343b1446cf032adf6504928f081c7 Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Mon, 26 Jul 2010 16:29:14 +0000 Subject: When LIBCLANG_CODE_COMPLETION_LOGGING is set in the environment, log code-completion command lines to stderr llvm-svn: 109395 --- clang/tools/libclang/CIndexCodeCompletion.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'clang/tools/libclang/CIndexCodeCompletion.cpp') diff --git a/clang/tools/libclang/CIndexCodeCompletion.cpp b/clang/tools/libclang/CIndexCodeCompletion.cpp index 277fadf683b..2df5241d022 100644 --- a/clang/tools/libclang/CIndexCodeCompletion.cpp +++ b/clang/tools/libclang/CIndexCodeCompletion.cpp @@ -22,6 +22,8 @@ #include "llvm/ADT/StringExtras.h" #include "llvm/Support/MemoryBuffer.h" #include "llvm/System/Program.h" +#include +#include #ifdef UDP_CODE_COMPLETION_LOGGER #include "clang/Basic/Version.h" @@ -273,6 +275,8 @@ CXCodeCompleteResults *clang_codeComplete(CXIndex CIdx, #endif #endif + bool EnableLogging = getenv("LIBCLANG_CODE_COMPLETION_LOGGING") != 0; + // The indexer, which is mainly used to determine where diagnostics go. CIndexer *CXXIdx = static_cast(CIdx); @@ -348,6 +352,15 @@ CXCodeCompleteResults *clang_codeComplete(CXIndex CIdx, argv.push_back(arg); } + if (EnableLogging) { + std::string Log = ClangPath.str(); + for (unsigned I = 0, N = argv.size(); I != N; ++I) { + Log += ' '; + Log += argv[I]; + } + fprintf(stderr, "libclang (Code Completion): %s\n", Log.c_str()); + } + // Add the null terminator. argv.push_back(NULL); @@ -363,6 +376,8 @@ CXCodeCompleteResults *clang_codeComplete(CXIndex CIdx, llvm::sys::Path DiagnosticsFile(tmpResultsFileName); TemporaryFiles.push_back(DiagnosticsFile); + + // Invoke 'clang'. llvm::sys::Path DevNull; // leave empty, causes redirection to /dev/null // on Unix or NUL (Windows). -- cgit v1.2.3