aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tools/libclang/CIndex.cpp17
-rw-r--r--unittests/CMakeLists.txt1
-rw-r--r--unittests/Makefile2
-rw-r--r--unittests/libclang/CMakeLists.txt7
-rw-r--r--unittests/libclang/LibclangTest.cpp17
-rw-r--r--unittests/libclang/Makefile25
6 files changed, 58 insertions, 11 deletions
diff --git a/tools/libclang/CIndex.cpp b/tools/libclang/CIndex.cpp
index a74feabf06..e862889f26 100644
--- a/tools/libclang/CIndex.cpp
+++ b/tools/libclang/CIndex.cpp
@@ -2686,6 +2686,11 @@ static void clang_parseTranslationUnit_Impl(void *UserData) {
unsigned options = PTUI->options;
CXTranslationUnit *out_TU = PTUI->out_TU;
+ // Set up the initial return values.
+ if (out_TU)
+ *out_TU = NULL;
+ PTUI->result = CXError_Failure;
+
// Check arguments.
if (!CIdx || !out_TU ||
(unsaved_files == NULL && num_unsaved_files != 0)) {
@@ -2693,10 +2698,6 @@ static void clang_parseTranslationUnit_Impl(void *UserData) {
return;
}
- // Set up the initial return values.
- *out_TU = NULL;
- PTUI->result = CXError_Failure;
-
CIndexer *CXXIdx = static_cast<CIndexer *>(CIdx);
if (CXXIdx->isOptEnabled(CXGlobalOpt_ThreadBackgroundPriorityForIndexing))
@@ -2826,12 +2827,8 @@ clang_parseTranslationUnit(CXIndex CIdx,
CIdx, source_filename, command_line_args, num_command_line_args,
unsaved_files, num_unsaved_files, options, &TU);
(void)Result;
-
- // FIXME: This probably papers over a problem. If the result is not success,
- // no TU should be set.
- if (Result != CXError_Success)
- return 0;
-
+ assert((TU && Result == CXError_Success) ||
+ (!TU && Result != CXError_Success));
return TU;
}
diff --git a/unittests/CMakeLists.txt b/unittests/CMakeLists.txt
index f00008e040..9cb0800540 100644
--- a/unittests/CMakeLists.txt
+++ b/unittests/CMakeLists.txt
@@ -22,3 +22,4 @@ if(CLANG_ENABLE_REWRITER)
add_subdirectory(Format)
add_subdirectory(Sema)
endif()
+add_subdirectory(libclang)
diff --git a/unittests/Makefile b/unittests/Makefile
index e4fbe584da..9b95a6eda2 100644
--- a/unittests/Makefile
+++ b/unittests/Makefile
@@ -14,7 +14,7 @@ ifndef CLANG_LEVEL
IS_UNITTEST_LEVEL := 1
CLANG_LEVEL := ..
-PARALLEL_DIRS = Basic Lex Driver
+PARALLEL_DIRS = Basic Lex Driver libclang
include $(CLANG_LEVEL)/../..//Makefile.config
diff --git a/unittests/libclang/CMakeLists.txt b/unittests/libclang/CMakeLists.txt
new file mode 100644
index 0000000000..1cdc45e2d2
--- /dev/null
+++ b/unittests/libclang/CMakeLists.txt
@@ -0,0 +1,7 @@
+add_clang_unittest(libclangTests
+ LibclangTest.cpp
+ )
+
+target_link_libraries(libclangTests
+ libclang
+ )
diff --git a/unittests/libclang/LibclangTest.cpp b/unittests/libclang/LibclangTest.cpp
new file mode 100644
index 0000000000..7048af9584
--- /dev/null
+++ b/unittests/libclang/LibclangTest.cpp
@@ -0,0 +1,17 @@
+//===- unittests/libclang/LibclangTest.cpp --- libclang tests -------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "clang-c/Index.h"
+#include "gtest/gtest.h"
+
+TEST(libclang, TestInvalidArgs) {
+ EXPECT_EQ(CXError_InvalidArguments,
+ clang_parseTranslationUnit2(0, 0, 0, 0, 0, 0, 0, 0));
+}
+
diff --git a/unittests/libclang/Makefile b/unittests/libclang/Makefile
new file mode 100644
index 0000000000..e96c925858
--- /dev/null
+++ b/unittests/libclang/Makefile
@@ -0,0 +1,25 @@
+##===- unittests/libclang/Makefile -------------------------*- Makefile -*-===##
+#
+# The LLVM Compiler Infrastructure
+#
+# This file is distributed under the University of Illinois Open Source
+# License. See LICENSE.TXT for details.
+#
+##===----------------------------------------------------------------------===##
+
+CLANG_LEVEL = ../..
+TESTNAME = libclang
+include $(CLANG_LEVEL)/../../Makefile.config
+LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser bitreader support mc option
+
+# Note that 'USEDLIBS' must include all of the core clang libraries
+# when -static is given to linker on cygming.
+USEDLIBS = clang.a \
+ clangIndex.a clangFormat.a clangRewriteCore.a \
+ clangFrontend.a clangDriver.a \
+ clangTooling.a \
+ clangSerialization.a clangParse.a clangSema.a \
+ clangAnalysis.a clangEdit.a clangAST.a clangLex.a \
+ clangBasic.a
+
+include $(CLANG_LEVEL)/unittests/Makefile