summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang/tools/libclang/CIndex.cpp17
-rw-r--r--clang/unittests/CMakeLists.txt1
-rw-r--r--clang/unittests/Makefile2
-rw-r--r--clang/unittests/libclang/CMakeLists.txt7
-rw-r--r--clang/unittests/libclang/LibclangTest.cpp17
-rw-r--r--clang/unittests/libclang/Makefile25
6 files changed, 58 insertions, 11 deletions
diff --git a/clang/tools/libclang/CIndex.cpp b/clang/tools/libclang/CIndex.cpp
index a74feabf06f..e862889f263 100644
--- a/clang/tools/libclang/CIndex.cpp
+++ b/clang/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/clang/unittests/CMakeLists.txt b/clang/unittests/CMakeLists.txt
index f00008e0407..9cb08005403 100644
--- a/clang/unittests/CMakeLists.txt
+++ b/clang/unittests/CMakeLists.txt
@@ -22,3 +22,4 @@ if(CLANG_ENABLE_REWRITER)
add_subdirectory(Format)
add_subdirectory(Sema)
endif()
+add_subdirectory(libclang)
diff --git a/clang/unittests/Makefile b/clang/unittests/Makefile
index e4fbe584da1..9b95a6eda20 100644
--- a/clang/unittests/Makefile
+++ b/clang/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/clang/unittests/libclang/CMakeLists.txt b/clang/unittests/libclang/CMakeLists.txt
new file mode 100644
index 00000000000..1cdc45e2d22
--- /dev/null
+++ b/clang/unittests/libclang/CMakeLists.txt
@@ -0,0 +1,7 @@
+add_clang_unittest(libclangTests
+ LibclangTest.cpp
+ )
+
+target_link_libraries(libclangTests
+ libclang
+ )
diff --git a/clang/unittests/libclang/LibclangTest.cpp b/clang/unittests/libclang/LibclangTest.cpp
new file mode 100644
index 00000000000..7048af95842
--- /dev/null
+++ b/clang/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/clang/unittests/libclang/Makefile b/clang/unittests/libclang/Makefile
new file mode 100644
index 00000000000..e96c925858e
--- /dev/null
+++ b/clang/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
OpenPOWER on IntegriCloud