@@ -803,7 +803,8 @@ void ASTUnit::ConfigureDiags(IntrusiveRefCntPtr<DiagnosticsEngine> Diags,
803803
804804std::unique_ptr<ASTUnit> ASTUnit::LoadFromASTFile (
805805    StringRef Filename, const  PCHContainerReader &PCHContainerRdr,
806-     WhatToLoad ToLoad, IntrusiveRefCntPtr<DiagnosticsEngine> Diags,
806+     WhatToLoad ToLoad, std::shared_ptr<DiagnosticOptions> DiagOpts,
807+     IntrusiveRefCntPtr<DiagnosticsEngine> Diags,
807808    const  FileSystemOptions &FileSystemOpts, const  HeaderSearchOptions &HSOpts,
808809    const  LangOptions *LangOpts, bool  OnlyLocalDecls,
809810    CaptureDiagsKind CaptureDiagnostics, bool  AllowASTWithCompilerErrors,
@@ -823,6 +824,7 @@ std::unique_ptr<ASTUnit> ASTUnit::LoadFromASTFile(
823824                           : std::make_unique<LangOptions>();
824825  AST->OnlyLocalDecls  = OnlyLocalDecls;
825826  AST->CaptureDiagnostics  = CaptureDiagnostics;
827+   AST->DiagOpts  = DiagOpts;
826828  AST->Diagnostics  = Diags;
827829  AST->FileMgr  = new  FileManager (FileSystemOpts, VFS);
828830  AST->UserFilesAreVolatile  = UserFilesAreVolatile;
@@ -1534,13 +1536,15 @@ StringRef ASTUnit::getASTFileName() const {
15341536
15351537std::unique_ptr<ASTUnit>
15361538ASTUnit::create (std::shared_ptr<CompilerInvocation> CI,
1539+                 std::shared_ptr<DiagnosticOptions> DiagOpts,
15371540                IntrusiveRefCntPtr<DiagnosticsEngine> Diags,
15381541                CaptureDiagsKind CaptureDiagnostics,
15391542                bool  UserFilesAreVolatile) {
15401543  std::unique_ptr<ASTUnit> AST (new  ASTUnit (false ));
15411544  ConfigureDiags (Diags, *AST, CaptureDiagnostics);
15421545  IntrusiveRefCntPtr<llvm::vfs::FileSystem> VFS =
15431546      createVFSFromCompilerInvocation (*CI, *Diags);
1547+   AST->DiagOpts  = DiagOpts;
15441548  AST->Diagnostics  = Diags;
15451549  AST->FileSystemOpts  = CI->getFileSystemOpts ();
15461550  AST->Invocation  = std::move (CI);
@@ -1556,6 +1560,7 @@ ASTUnit::create(std::shared_ptr<CompilerInvocation> CI,
15561560ASTUnit *ASTUnit::LoadFromCompilerInvocationAction (
15571561    std::shared_ptr<CompilerInvocation> CI,
15581562    std::shared_ptr<PCHContainerOperations> PCHContainerOps,
1563+     std::shared_ptr<DiagnosticOptions> DiagOpts,
15591564    IntrusiveRefCntPtr<DiagnosticsEngine> Diags, FrontendAction *Action,
15601565    ASTUnit *Unit, bool  Persistent, StringRef ResourceFilesPath,
15611566    bool  OnlyLocalDecls, CaptureDiagsKind CaptureDiagnostics,
@@ -1567,7 +1572,8 @@ ASTUnit *ASTUnit::LoadFromCompilerInvocationAction(
15671572  ASTUnit *AST = Unit;
15681573  if  (!AST) {
15691574    //  Create the AST unit.
1570-     OwnAST = create (CI, Diags, CaptureDiagnostics, UserFilesAreVolatile);
1575+     OwnAST =
1576+         create (CI, DiagOpts, Diags, CaptureDiagnostics, UserFilesAreVolatile);
15711577    AST = OwnAST.get ();
15721578    if  (!AST)
15731579      return  nullptr ;
@@ -1729,6 +1735,7 @@ bool ASTUnit::LoadFromCompilerInvocation(
17291735std::unique_ptr<ASTUnit> ASTUnit::LoadFromCompilerInvocation (
17301736    std::shared_ptr<CompilerInvocation> CI,
17311737    std::shared_ptr<PCHContainerOperations> PCHContainerOps,
1738+     std::shared_ptr<DiagnosticOptions> DiagOpts,
17321739    IntrusiveRefCntPtr<DiagnosticsEngine> Diags, FileManager *FileMgr,
17331740    bool  OnlyLocalDecls, CaptureDiagsKind CaptureDiagnostics,
17341741    unsigned  PrecompilePreambleAfterNParses, TranslationUnitKind TUKind,
@@ -1737,6 +1744,7 @@ std::unique_ptr<ASTUnit> ASTUnit::LoadFromCompilerInvocation(
17371744  //  Create the AST unit.
17381745  std::unique_ptr<ASTUnit> AST (new  ASTUnit (false ));
17391746  ConfigureDiags (Diags, *AST, CaptureDiagnostics);
1747+   AST->DiagOpts  = DiagOpts;
17401748  AST->Diagnostics  = Diags;
17411749  AST->OnlyLocalDecls  = OnlyLocalDecls;
17421750  AST->CaptureDiagnostics  = CaptureDiagnostics;
0 commit comments