11 clang::FileManager* Files,
12 std::shared_ptr<clang::PCHContainerOperations> PCHContainerOps,
13 clang::DiagnosticConsumer* DiagConsumer)
15#if INSTANTIATOR_LLVM_MAJOR < 20
16 std::unique_ptr<clang::ASTUnit> AST =
17 clang::ASTUnit::LoadFromCompilerInvocation(Invocation,
18 std::move(PCHContainerOps),
19 clang::CompilerInstance::createDiagnostics(&Invocation->getDiagnosticOpts(),
24 auto diag_ids = llvm::makeIntrusiveRefCnt<clang::DiagnosticIDs>();
25 auto diag_engine = clang::DiagnosticsEngine(diag_ids, Invocation->DiagnosticOpts);
26 std::unique_ptr<clang::ASTUnit> AST = clang::ASTUnit::LoadFromCompilerInvocation(
28 std::move(PCHContainerOps),
29 clang::CompilerInstance::createDiagnostics(*createVFSFromCompilerInvocation(*Invocation, diag_engine),
30 &Invocation->getDiagnosticOpts(),
35 if(!AST or AST->getDiagnostics().hasUncompilableErrorOccurred())
return false;
37 spdlog::debug(
"Parsed AST for {}", AST->getOriginalSourceFileName().str());
38 ASTs.push_back(std::move(AST));