@@ -115,11 +115,9 @@ static std::string PrintEnum(const Value &V) {
115115 IsFirst = false ;
116116 }
117117 }
118-
119- llvm::SmallString<24 > ApStr;
120- AP.toString (ApStr, /* Radix=*/ 10 );
121-
122- SS << " : " << PrintQualType (Ctx, ED->getIntegerType ()) << " " << ApStr;
118+ llvm::SmallString<64 > APStr;
119+ AP.toString (APStr, /* Radix=*/ 10 );
120+ SS << " : " << PrintQualType (Ctx, ED->getIntegerType ()) << " " << APStr;
123121 return Str;
124122}
125123
@@ -279,10 +277,15 @@ static llvm::Expected<llvm::orc::ExecutorAddr> CompileDecl(Interpreter &Interp,
279277 ASTConsumer &Consumer = Interp.getCompilerInstance ()->getASTConsumer ();
280278 Consumer.HandleTopLevelDecl (DeclGroupRef (D));
281279 Interp.getCompilerInstance ()->getSema ().PerformPendingInstantiations ();
282- Consumer.HandleTranslationUnit (Interp.getASTContext ());
280+ ASTContext &C = Interp.getASTContext ();
281+ TranslationUnitDecl *TUPart = C.getTranslationUnitDecl ();
282+ assert (!TUPart->containsDecl (D) && " Decl already added!" );
283+ TUPart->addDecl (D);
284+ Consumer.HandleTranslationUnit (C);
283285
284286 if (std::unique_ptr<llvm::Module> M = Interp.GenModule ()) {
285- if (llvm::Error Err = Interp.ExecuteModule (M))
287+ PartialTranslationUnit PTU = {TUPart, std::move (M)};
288+ if (llvm::Error Err = Interp.Execute (PTU))
286289 return Err;
287290 ASTNameGenerator ASTNameGen (Interp.getASTContext ());
288291 llvm::Expected<llvm::orc::ExecutorAddr> AddrOrErr =
0 commit comments