45 llvm::vfs::OverlayFileSystem &OverlayFS);
59 void handleModuleFile(serialization::ModuleFile *MF);
60 void parseToLocation(SourceLocation Loc);
63 void FileChanged(SourceLocation Loc, FileChangeReason Reason,
64 SrcMgr::CharacteristicKind FileType,
65 FileID PrevFID)
override;
67 void InclusionDirective(SourceLocation DirectiveLoc,
68 const Token &IncludeToken, StringRef IncludedFilename,
69 bool IsAngled, CharSourceRange FilenameRange,
70 OptionalFileEntryRef IncludedFile,
71 StringRef SearchPath, StringRef RelativePath,
72 const Module *SuggestedModule,
bool ModuleImported,
73 SrcMgr::CharacteristicKind FileType)
override;
75 void EndOfMainFile()
override;
80 void Ident(SourceLocation Loc, StringRef)
override;
81 void PragmaDirective(SourceLocation Loc, PragmaIntroducerKind)
override;
82 void PragmaComment(SourceLocation Loc,
const IdentifierInfo *,
84 void PragmaDetectMismatch(SourceLocation Loc, StringRef, StringRef)
override;
85 void PragmaDebug(SourceLocation Loc, StringRef)
override;
86 void PragmaMessage(SourceLocation Loc, StringRef, PragmaMessageKind,
88 void PragmaDiagnosticPush(SourceLocation Loc, StringRef)
override;
89 void PragmaDiagnosticPop(SourceLocation Loc, StringRef)
override;
90 void PragmaDiagnostic(SourceLocation Loc, StringRef, diag::Severity,
92 void HasInclude(SourceLocation Loc, StringRef,
bool, OptionalFileEntryRef,
93 SrcMgr::CharacteristicKind)
override;
94 void PragmaOpenCLExtension(SourceLocation NameLoc,
const IdentifierInfo *,
95 SourceLocation StateLoc,
unsigned)
override;
96 void PragmaWarning(SourceLocation Loc, PragmaWarningSpecifier,
97 ArrayRef<int>)
override;
98 void PragmaWarningPush(SourceLocation Loc,
int)
override;
99 void PragmaWarningPop(SourceLocation Loc)
override;
100 void PragmaAssumeNonNullBegin(SourceLocation Loc)
override;
101 void PragmaAssumeNonNullEnd(SourceLocation Loc)
override;
102 void MacroExpands(
const Token &MacroNameTok,
const MacroDefinition &,
103 SourceRange Range,
const MacroArgs *)
override;
104 void MacroDefined(
const Token &MacroNameTok,
105 const MacroDirective *MD)
override;
106 void MacroUndefined(
const Token &,
const MacroDefinition &,
107 const MacroDirective *Undef)
override;
108 void Defined(
const Token &MacroNameTok,
const MacroDefinition &,
109 SourceRange Range)
override;
110 void SourceRangeSkipped(SourceRange Range, SourceLocation EndifLoc)
override;
111 void If(SourceLocation Loc, SourceRange, ConditionValueKind)
override;
112 void Elif(SourceLocation Loc, SourceRange, ConditionValueKind,
113 SourceLocation)
override;
114 void Ifdef(SourceLocation Loc,
const Token &,
115 const MacroDefinition &)
override;
116 void Ifndef(SourceLocation Loc,
const Token &,
117 const MacroDefinition &)
override;
118 void Else(SourceLocation Loc, SourceLocation)
override;
119 void Endif(SourceLocation Loc, SourceLocation)
override;
121 std::unique_ptr<FileRecorder> Recorder;
123 llvm::DenseSet<serialization::ModuleFile *> VisitedModules;
125 CompilerInstance &Compiler;
127 llvm::IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem> InMemoryFs;
129 SourceManager &Sources;
130 DiagnosticOptions DiagOpts;
131 DiagnosticsEngine Diags;
132 LangOptions LangOpts;
133 HeaderSearchOptions HSOpts;
134 TrivialModuleLoader ModuleLoader;
136 std::unique_ptr<HeaderSearch> HeaderInfo;
137 std::unique_ptr<Preprocessor> PP;
138 bool EnteredMainFile =
false;
139 bool StartedLexing =
false;