diff --git a/lib/Interpreter/CppInterOp.cpp b/lib/Interpreter/CppInterOp.cpp index 08fb6aca2..712af4ed4 100644 --- a/lib/Interpreter/CppInterOp.cpp +++ b/lib/Interpreter/CppInterOp.cpp @@ -2718,7 +2718,7 @@ namespace Cpp { TInterp_t GetInterpreter() { return sInterpreter; } void UseExternalInterpreter(TInterp_t I) { - assert(sInterpreter && "sInterpreter already in use!"); + assert(!sInterpreter && "sInterpreter already in use!"); sInterpreter = static_cast(I); OwningSInterpreter = false; } diff --git a/unittests/CppInterOp/InterpreterTest.cpp b/unittests/CppInterOp/InterpreterTest.cpp index 7a026d0f2..0d42fc155 100644 --- a/unittests/CppInterOp/InterpreterTest.cpp +++ b/unittests/CppInterOp/InterpreterTest.cpp @@ -175,6 +175,9 @@ TEST(InterpreterTest, CodeCompletion) { TEST(InterpreterTest, ExternalInterpreterTest) { +if (llvm::sys::RunningOnValgrind()) + GTEST_SKIP() << "XFAIL due to Valgrind report"; + #ifdef USE_REPL llvm::ExitOnError ExitOnErr; clang::IncrementalCompilerBuilder CB; @@ -200,7 +203,12 @@ TEST(InterpreterTest, ExternalInterpreterTest) { #endif EXPECT_NE(ExtInterp, nullptr); - Cpp::UseExternalInterpreter(ExtInterp); + +#if !defined(NDEBUG) && GTEST_HAS_DEATH_TEST +#ifndef _WIN32 // Windows seems to fail to die... + EXPECT_DEATH(Cpp::UseExternalInterpreter(ExtInterp), "sInterpreter already in use!"); +#endif // _WIN32 +#endif EXPECT_TRUE(Cpp::GetInterpreter()) << "External Interpreter not set"; #ifdef USE_REPL