clang: lib/Basic/SourceLocation.cpp Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

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

18#include "llvm/ADT/FoldingSet.h"

19#include "llvm/Support/Compiler.h"

20#include "llvm/Support/raw_ostream.h"

21#include

22#include

23#include

24

25using namespace clang;

26

27

28

29

30

32 if (Loc.isValid()) {

33 Loc.print(OS, SM);

34 OS << ": ";

35 }

36 OS << Message << '\n';

37}

38

39

40

41

42

43static_assert(std::is_trivially_destructible_v,

44 "SourceLocation must be trivially destructible because it is "

45 "used in unions");

46

47static_assert(std::is_trivially_destructible_v,

48 "SourceRange must be trivially destructible because it is "

49 "used in unions");

50

52 return llvm::DenseMapInfo::getHashValue(ID);

53}

54

57 ID.AddInteger(X.ID);

58}

59

62 OS << "";

63 return;

64 }

65

68

70 OS << "";

71 return;

72 }

73

76 return;

77 }

78

79 SM.getExpansionLoc(*this).print(OS, SM);

80

81 OS << " <Spelling=";

82 SM.getSpellingLoc(*this).print(OS, SM);

83 OS << '>';

84}

85

86LLVM_DUMP_METHOD std::string

88 std::string S;

89 llvm::raw_string_ostream OS(S);

91 return S;

92}

93

96 llvm::errs() << '\n';

97}

98

101 llvm::errs() << '\n';

102}

103

107

109

111 OS << "";

113 }

114

120 OS << "line" << ':' << PLoc.getLine() << ':' << PLoc.getColumn();

121 } else {

122 OS << "col" << ':' << PLoc.getColumn();

123 }

124 return PLoc;

125 }

127

128 OS << " <Spelling=";

129 PrintedLoc = PrintDifference(OS, SM, SM.getSpellingLoc(Loc), PrintedLoc);

130 OS << '>';

131 return PrintedLoc;

132}

133

135

136 OS << '<';

138 if (B != E) {

139 OS << ", ";

141 }

142 OS << '>';

143}

144

145LLVM_DUMP_METHOD std::string

147 std::string S;

148 llvm::raw_string_ostream OS(S);

150 return S;

151}

152

153

154

155

156

159 return SrcMgr->getFileID(*this);

160}

161

164 return FullSourceLoc(SrcMgr->getExpansionLoc(*this), *SrcMgr);

165}

166

168 return SrcMgr->getDecomposedExpansionLoc(*this);

169}

170

173 return FullSourceLoc(SrcMgr->getSpellingLoc(*this), *SrcMgr);

174}

175

178 return FullSourceLoc(SrcMgr->getFileLoc(*this), *SrcMgr);

179}

180

184

185 return SrcMgr->getPresumedLoc(*this, UseLineDirectives);

186}

187

190 return SrcMgr->isMacroArgExpansion(*this, StartLoc);

191}

192

195 return FullSourceLoc(SrcMgr->getImmediateMacroCallerLoc(*this), *SrcMgr);

196}

197

200 return std::make_pair(FullSourceLoc(), StringRef());

201

202 std::pair<SourceLocation, StringRef> ImportLoc =

203 SrcMgr->getModuleImportLoc(*this);

204 return std::make_pair(FullSourceLoc(ImportLoc.first, *SrcMgr),

205 ImportLoc.second);

206}

207

210 return SrcMgr->getFileOffset(*this);

211}

212

217

222

225 return SrcMgr->getFileEntryForID(getFileID());

226}

227

230 return SrcMgr->getFileEntryRefForID(getFileID());

231}

232

235 return SrcMgr->getExpansionLineNumber(*this, Invalid);

236}

237

240 return SrcMgr->getExpansionColumnNumber(*this, Invalid);

241}

242

245 return SrcMgr->getSpellingLineNumber(*this, Invalid);

246}

247

250 return SrcMgr->getSpellingColumnNumber(*this, Invalid);

251}

252

255 return SrcMgr->isInSystemHeader(*this);

256}

257

260 return SrcMgr->isBeforeInTranslationUnit(*this, Loc);

261}

262

266

269 return SrcMgr->getCharacterData(*this, Invalid);

270}

271

274 return SrcMgr->getBufferData(SrcMgr->getFileID(*this), Invalid);

275}

276

278 return SrcMgr->getDecomposedLoc(*this);

279}

FormatToken * Previous

The previous token in the unwrapped line.

Forward-declares and imports various common LLVM datatypes that clang wants to use unqualified.

Defines the PrettyStackTraceEntry class, which is used to make crashes give more contextual informati...

static PresumedLoc PrintDifference(raw_ostream &OS, const SourceManager &SM, SourceLocation Loc, PresumedLoc Previous)

Definition SourceLocation.cpp:104

Defines the clang::SourceLocation class and associated facilities.

Defines the SourceManager interface.

Cached information about one file (either on disk or in the virtual file system).

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

FullSourceLoc getFileLoc() const

Definition SourceLocation.cpp:176

unsigned getColumnNumber(bool *Invalid=nullptr) const

Definition SourceLocation.cpp:218

FileIDAndOffset getDecomposedExpansionLoc() const

Decompose the underlying SourceLocation into a raw (FileID + Offset) pair, after walking through all ...

Definition SourceLocation.cpp:167

FullSourceLoc getExpansionLoc() const

Definition SourceLocation.cpp:162

unsigned getLineNumber(bool *Invalid=nullptr) const

Definition SourceLocation.cpp:213

FullSourceLoc getSpellingLoc() const

Definition SourceLocation.cpp:171

std::pair< FullSourceLoc, StringRef > getModuleImportLoc() const

Definition SourceLocation.cpp:198

FileID getFileID() const

Definition SourceLocation.cpp:157

OptionalFileEntryRef getFileEntryRef() const

Definition SourceLocation.cpp:228

unsigned getSpellingLineNumber(bool *Invalid=nullptr) const

Definition SourceLocation.cpp:243

FullSourceLoc getImmediateMacroCallerLoc() const

Definition SourceLocation.cpp:193

const char * getCharacterData(bool *Invalid=nullptr) const

Definition SourceLocation.cpp:267

unsigned getExpansionColumnNumber(bool *Invalid=nullptr) const

Definition SourceLocation.cpp:238

StringRef getBufferData(bool *Invalid=nullptr) const

Return a StringRef to the source buffer data for the specified FileID.

Definition SourceLocation.cpp:272

void dump() const

Prints information about this FullSourceLoc to stderr.

Definition SourceLocation.cpp:263

bool isInSystemHeader() const

Definition SourceLocation.cpp:253

const FileEntry * getFileEntry() const

Definition SourceLocation.cpp:223

unsigned getFileOffset() const

Definition SourceLocation.cpp:208

FullSourceLoc()=default

Creates a FullSourceLoc where isValid() returns false.

PresumedLoc getPresumedLoc(bool UseLineDirectives=true) const

Definition SourceLocation.cpp:181

FileIDAndOffset getDecomposedLoc() const

Decompose the specified location into a raw FileID + Offset pair.

Definition SourceLocation.cpp:277

bool isMacroArgExpansion(FullSourceLoc *StartLoc=nullptr) const

Definition SourceLocation.cpp:188

unsigned getExpansionLineNumber(bool *Invalid=nullptr) const

Definition SourceLocation.cpp:233

bool isBeforeInTranslationUnitThan(SourceLocation Loc) const

Determines the order of 2 source locations in the translation unit.

Definition SourceLocation.cpp:258

unsigned getSpellingColumnNumber(bool *Invalid=nullptr) const

Definition SourceLocation.cpp:248

Represents an unpacked "presumed" location which can be presented to the user.

unsigned getColumn() const

Return the presumed column number of this location.

const char * getFilename() const

Return the presumed filename of this location.

unsigned getLine() const

Return the presumed line number of this location.

bool isInvalid() const

Return true if this object is invalid or uninitialized.

void print(raw_ostream &OS) const override

Definition SourceLocation.cpp:31

Encodes a location in the source.

std::string printToString(const SourceManager &SM) const

Definition SourceLocation.cpp:87

void dump(const SourceManager &SM) const

Definition SourceLocation.cpp:94

bool isValid() const

Return true if this is a valid SourceLocation object.

void print(raw_ostream &OS, const SourceManager &SM) const

Definition SourceLocation.cpp:60

friend class SourceManager

unsigned getHashValue() const

Definition SourceLocation.cpp:51

This class handles loading and caching of source files into memory.

std::string printToString(const SourceManager &SM) const

Definition SourceLocation.cpp:146

void dump(const SourceManager &SM) const

Definition SourceLocation.cpp:99

void print(raw_ostream &OS, const SourceManager &SM) const

Definition SourceLocation.cpp:134

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

CustomizableOptional< FileEntryRef > OptionalFileEntryRef

std::pair< FileID, unsigned > FileIDAndOffset