clang: include/clang/Sema/MultiplexExternalSemaSource.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12#ifndef LLVM_CLANG_SEMA_MULTIPLEXEXTERNALSEMASOURCE_H

13#define LLVM_CLANG_SEMA_MULTIPLEXEXTERNALSEMASOURCE_H

14

17#include "llvm/ADT/SmallVector.h"

18#include

19

21

22 class CXXConstructorDecl;

23 class CXXRecordDecl;

24 class DeclaratorDecl;

25 struct ExternalVTableUse;

26 class LookupResult;

27 class NamespaceDecl;

28 class Scope;

29 class Sema;

30 class TypedefNameDecl;

31 class ValueDecl;

32 class VarDecl;

33

34

35

36

37

39

40 static char ID;

41

42private:

44

45public:

46

47

48

49

50

51

53

55

56

57

58

59

61

62

63

64

65

66

67

69

70

71

73

74

76

77

78

80

81

82

84

85

86

88

89

90

92

94

95

96

100

102

103 bool

106

107

108

110

111

112

113

114

115

116 void

118 llvm::function_ref<bool(Decl::Kind)> IsKindWeWant,

120

121

122

123

126

127

128

130

131

132

133

134

135

136

138

139

141

142

143

144

146

147

148

150

151

152

154

155

156

158

159

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189 bool

191 uint64_t &Size, uint64_t &Alignment,

192 llvm::DenseMap<const FieldDecl *, uint64_t> &FieldOffsets,

193 llvm::DenseMap<const CXXRecordDecl *, CharUnits> &BaseOffsets,

195 CharUnits> &VirtualBaseOffsets) override;

196

197

198

200

201

202

203

204

205

206

207

209

210

212

213

214

216

217

218

220

221

222

223 void

225

226

227

229 llvm::MapVector<NamedDecl *, SourceLocation> &Undefined) override;

230

233 Exprs) override;

234

235

236

237

238

239

240

241

242

244

245

246

247

248

249

250

251

253

254

255

256

257

258

259

260

263

264

265

266

267

268

269

270

273

274

275

276

277

278

279

280

282

283

284

285

286

287

288

291

292

293

294

295

296

297

298

301

302

303

304

305

306

307

308

310 SmallVectorImpl<std::pair<IdentifierInfo*, WeakInfo> > &WI) override;

311

312

313

314

315

316

318

319

320

321

322

323

324

325

327 SmallVectorImpl<std::pair<ValueDecl*, SourceLocation> >& Pending) override;

328

329

330

331

332

333

334

336 llvm::MapVector<const FunctionDecl *, std::unique_ptr>

337 &LPTMap) override;

338

339

340

341

342

343

344

347

348

349

354 bool EnteringContext,

356

357

358

359

360

361

362

363

364

365

366

369

370

372

373

374

375 bool isA(const void *ClassID) const override {

377 }

379

380};

381

382}

383

384#endif

llvm::MachO::Record Record

ASTConsumer - This is an abstract interface that should be implemented by clients that read ASTs.

Represents a base class of a C++ class.

Represents a C++ base or member initializer.

Represents a C++ struct/union/class.

Represents a C++ nested-name-specifier or a global scope specifier.

CharUnits - This is an opaque type for sizes expressed in character units.

Base class for callback objects used by Sema::CorrectTypo to check the validity of a potential typo c...

DeclContext - This is used only as base class of specific decl types that can act as declaration cont...

Decl - This represents one declaration (or definition), e.g.

Kind

Lists the kind of concrete classes of Decl.

The name of a declaration.

Abstract interface for external sources of AST nodes.

MemoryBufferSizes getMemoryBufferSizes() const

Return the amount of memory used by memory buffers, breaking down by heap-backed versus mmap'ed memor...

An abstract interface that should be implemented by external AST sources that also provide informatio...

bool isA(const void *ClassID) const override

LLVM-style RTTI.

Represents a member of a struct/union/class.

An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...

Represents a function declaration or definition.

Represents the results of name lookup.

Describes a module or submodule.

An abstract interface that should be implemented by external AST sources that also provide informatio...

void ReadLateParsedTemplates(llvm::MapVector< const FunctionDecl *, std::unique_ptr< LateParsedTemplate > > &LPTMap) override

Read the set of late parsed template functions for this source.

void FindFileRegionDecls(FileID File, unsigned Offset, unsigned Length, SmallVectorImpl< Decl * > &Decls) override

Get the decls that are contained in a file in the Offset/Length range.

bool LoadExternalSpecializations(const Decl *D, bool OnlyPartial) override

Load all the external specializations for the Decl.

void updateOutOfDateSelector(Selector Sel) override

Load the contents of the global method pool for a given selector if necessary.

Stmt * GetExternalDeclStmt(uint64_t Offset) override

Resolve the offset of a statement in the decl stream into a statement.

TypoCorrection CorrectTypo(const DeclarationNameInfo &Typo, int LookupKind, Scope *S, CXXScopeSpec *SS, CorrectionCandidateCallback &CCC, DeclContext *MemberContext, bool EnteringContext, const ObjCObjectPointerType *OPT) override

Try to "correct" a typo in the source code by finding visible declarations whose names are similar to...

bool LookupUnqualified(LookupResult &R, Scope *S) override

Do last resort, unqualified lookup on a LookupResult that Sema cannot find.

void ReadDelegatingConstructors(SmallVectorImpl< CXXConstructorDecl * > &Decls) override

Read the set of delegating constructors known to the external Sema source.

ExtKind hasExternalDefinitions(const Decl *D) override

void ReadMismatchingDeleteExpressions(llvm::MapVector< FieldDecl *, llvm::SmallVector< std::pair< SourceLocation, bool >, 4 > > &Exprs) override

void ReadUnusedFileScopedDecls(SmallVectorImpl< const DeclaratorDecl * > &Decls) override

Read the set of unused file-scope declarations known to the external Sema source.

void ReadDeclsToCheckForDeferredDiags(llvm::SmallSetVector< Decl *, 4 > &Decls) override

Read the set of decls to be checked for deferred diags.

Selector GetExternalSelector(uint32_t ID) override

Resolve a selector ID into a selector.

CXXBaseSpecifier * GetExternalCXXBaseSpecifiers(uint64_t Offset) override

Resolve the offset of a set of C++ base specifiers in the decl stream into an array of specifiers.

void ReadTentativeDefinitions(SmallVectorImpl< VarDecl * > &Defs) override

Read the set of tentative definitions known to the external Sema source.

void ReadUndefinedButUsed(llvm::MapVector< NamedDecl *, SourceLocation > &Undefined) override

Load the set of used but not defined functions or variables with internal linkage,...

void ReadComments() override

Loads comment ranges.

void FindExternalLexicalDecls(const DeclContext *DC, llvm::function_ref< bool(Decl::Kind)> IsKindWeWant, SmallVectorImpl< Decl * > &Result) override

Finds all declarations lexically contained within the given DeclContext, after applying an optional f...

void PrintStats() override

Print any statistics that have been gathered regarding the external AST source.

void ReadExtVectorDecls(SmallVectorImpl< TypedefNameDecl * > &Decls) override

Read the set of ext_vector type declarations known to the external Sema source.

void ReadUnusedLocalTypedefNameCandidates(llvm::SmallSetVector< const TypedefNameDecl *, 4 > &Decls) override

Read the set of potentially unused typedefs known to the source.

static bool classof(const ExternalASTSource *S)

void ReadWeakUndeclaredIdentifiers(SmallVectorImpl< std::pair< IdentifierInfo *, WeakInfo > > &WI) override

Read the set of weak, undeclared identifiers known to the external Sema source.

void AssignedLambdaNumbering(CXXRecordDecl *Lambda) override

Notify the external source that a lambda was assigned a mangling number.

CXXCtorInitializer ** GetExternalCXXCtorInitializers(uint64_t Offset) override

Resolve a handle to a list of ctor initializers into the list of initializers themselves.

void CompleteType(TagDecl *Tag) override

Gives the external AST source an opportunity to complete an incomplete type.

void ReadUsedVTables(SmallVectorImpl< ExternalVTableUse > &VTables) override

Read the set of used vtables known to the external Sema source.

void StartedDeserializing() override

Notify ExternalASTSource that we started deserialization of a decl or type so until FinishedDeseriali...

void FinishedDeserializing() override

Notify ExternalASTSource that we finished the deserialization of a decl or type.

bool MaybeDiagnoseMissingCompleteType(SourceLocation Loc, QualType T) override

Produces a diagnostic note if one of the attached sources contains a complete definition for T.

bool isA(const void *ClassID) const override

LLVM-style RTTI.

void ReadMethodPool(Selector Sel) override

Load the contents of the global method pool for a given selector.

void InitializeSema(Sema &S) override

Initialize the semantic source with the Sema instance being used to perform semantic analysis on the ...

void CompleteRedeclChain(const Decl *D) override

Complete the redeclaration chain if it's been extended since the previous generation of the AST sourc...

Decl * GetExternalDecl(GlobalDeclID ID) override

Resolve a declaration ID into a declaration, potentially building a new declaration.

void completeVisibleDeclsMap(const DeclContext *DC) override

Ensures that the table of all visible declarations inside this context is up to date.

uint32_t GetNumExternalSelectors() override

Returns the number of selectors known to the external AST source.

bool FindExternalVisibleDeclsByName(const DeclContext *DC, DeclarationName Name, const DeclContext *OriginalDC) override

Find all declarations with the given name in the given context.

void ReadReferencedSelectors(SmallVectorImpl< std::pair< Selector, SourceLocation > > &Sels) override

Read the set of referenced selectors known to the external Sema source.

void StartTranslationUnit(ASTConsumer *Consumer) override

Function that will be invoked when we begin parsing a new translation unit involving this external AS...

bool layoutRecordType(const RecordDecl *Record, uint64_t &Size, uint64_t &Alignment, llvm::DenseMap< const FieldDecl *, uint64_t > &FieldOffsets, llvm::DenseMap< const CXXRecordDecl *, CharUnits > &BaseOffsets, llvm::DenseMap< const CXXRecordDecl *, CharUnits > &VirtualBaseOffsets) override

Perform layout on the given record.

void ReadKnownNamespaces(SmallVectorImpl< NamespaceDecl * > &Namespaces) override

Load the set of namespaces that are known to the external source, which will be used during typo corr...

Module * getModule(unsigned ID) override

Retrieve the module that corresponds to the given module ID.

~MultiplexExternalSemaSource() override

void ReadPendingInstantiations(SmallVectorImpl< std::pair< ValueDecl *, SourceLocation > > &Pending) override

Read the set of pending instantiations known to the external Sema source.

void AddSource(ExternalSemaSource *Source)

Appends new source to the source list.

void ForgetSema() override

Inform the semantic consumer that Sema is no longer available.

Represents an ObjC class declaration.

Represents a pointer to an Objective C object.

A (possibly-)qualified type.

Represents a struct/union/class.

Scope - A scope is a transient data structure that is used while parsing the program.

Smart pointer class that efficiently represents Objective-C method names.

Sema - This implements semantic analysis and AST building for C.

Encodes a location in the source.

Stmt - This represents one statement.

Represents the declaration of a struct/union/class/enum.

Simple class containing the result of Sema::CorrectTypo.

The JSON file list parser is used to communicate input to InstallAPI.

@ Result

The result type of a method or function.

const FunctionProtoType * T

@ Class

The "class" keyword introduces the elaborated-type-specifier.

DeclarationNameInfo - A collector data type for bundling together a DeclarationName and the correspon...