forked from OSchip/llvm-project
libclang: fix a bug in processing invalid arguments, introduced in r201249,
pointed out by Daniel Jasper in r201329 llvm-svn: 201346
This commit is contained in:
parent
8459762c88
commit
fbe5672746
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -22,3 +22,4 @@ if(CLANG_ENABLE_REWRITER)
|
|||
add_subdirectory(Format)
|
||||
add_subdirectory(Sema)
|
||||
endif()
|
||||
add_subdirectory(libclang)
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
add_clang_unittest(libclangTests
|
||||
LibclangTest.cpp
|
||||
)
|
||||
|
||||
target_link_libraries(libclangTests
|
||||
libclang
|
||||
)
|
|
@ -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));
|
||||
}
|
||||
|
|
@ -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
|
Loading…
Reference in New Issue