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 (LLVM_BINARY_DIR);
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