File tree Expand file tree Collapse file tree 1 file changed +37
-0
lines changed Expand file tree Collapse file tree 1 file changed +37
-0
lines changed Original file line number Diff line number Diff line change 1+
12#include " Utils.h"
23
34#include " clang/Interpreter/CppInterOp.h"
5+
6+ #ifdef USE_CLING
7+ #include " cling/Interpreter/Interpreter.h"
8+ #endif // USE_CLING
9+
10+ #ifdef USE_REPL
11+ #include " clang/Interpreter/Interpreter.h"
12+ #endif // USE_REPL
13+
414#include " clang/Basic/Version.h"
515
616#include " llvm/ADT/SmallString.h"
@@ -162,3 +172,30 @@ TEST(InterpreterTest, CodeCompletion) {
162172 GTEST_SKIP ();
163173#endif
164174}
175+
176+ TEST (InterpreterTest, ExternalInterpreterTest) {
177+
178+ #ifdef USE_REPL
179+ llvm::ExitOnError ExitOnErr;
180+ clang::IncrementalCompilerBuilder CB;
181+ CB.SetCompilerArgs ({" -std=c++20" });
182+
183+ // Create the incremental compiler instance.
184+ std::unique_ptr<clang::CompilerInstance> CI;
185+ CI = ExitOnErr (CB.CreateCpp ());
186+
187+ // Create the interpreter instance.
188+ std::unique_ptr<clang::Interpreter> I =
189+ ExitOnErr (clang::Interpreter::create (std::move (CI)));
190+ #endif
191+
192+ #ifdef USE_CLING
193+ std::unique_ptr<cling::Interpreter> I ();
194+ #endif
195+
196+ auto ExtInterp = I.get ();
197+ EXPECT_NE (ExtInterp, nullptr );
198+ Cpp::UseExternalInterpreter (ExtInterp);
199+ EXPECT_FALSE (Cpp::OwnsInterpreter ());
200+ I.release ();
201+ }
You can’t perform that action at this time.
0 commit comments