Coverage Report

Created: 2023-09-21 18:56

/Users/buildslave/jenkins/workspace/coverage/llvm-project/clang/lib/Lex/PreprocessorLexer.cpp
Line
Count
Source (jump to first uncovered line)
1
//===- PreprocessorLexer.cpp - C Language Family Lexer --------------------===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
//
9
//  This file implements the PreprocessorLexer and Token interfaces.
10
//
11
//===----------------------------------------------------------------------===//
12
13
#include "clang/Lex/PreprocessorLexer.h"
14
#include "clang/Basic/SourceManager.h"
15
#include "clang/Lex/LexDiagnostic.h"
16
#include "clang/Lex/Preprocessor.h"
17
#include "clang/Lex/Token.h"
18
#include <cassert>
19
20
using namespace clang;
21
22
0
void PreprocessorLexer::anchor() {}
23
24
PreprocessorLexer::PreprocessorLexer(Preprocessor *pp, FileID fid)
25
1.76M
    : PP(pp), FID(fid) {
26
1.76M
  if (pp)
27
1.76M
    InitialNumSLocEntries = pp->getSourceManager().local_sloc_entry_size();
28
1.76M
}
29
30
/// After the preprocessor has parsed a \#include, lex and
31
/// (potentially) macro expand the filename.
32
3.86M
void PreprocessorLexer::LexIncludeFilename(Token &FilenameTok) {
33
3.86M
  assert(ParsingFilename == false && "reentered LexIncludeFilename");
34
35
  // We are now parsing a filename!
36
3.86M
  ParsingFilename = true;
37
38
  // Lex the filename.
39
3.86M
  if (LexingRawMode)
40
3.52k
    IndirectLex(FilenameTok);
41
3.85M
  else
42
3.85M
    PP->Lex(FilenameTok);
43
44
  // We should have obtained the filename now.
45
3.86M
  ParsingFilename = false;
46
3.86M
}
47
48
/// getFileEntry - Return the FileEntry corresponding to this FileID.  Like
49
/// getFileID(), this only works for lexers with attached preprocessors.
50
OptionalFileEntryRefDegradesToFileEntryPtr
51
1.08M
PreprocessorLexer::getFileEntry() const {
52
1.08M
  return PP->getSourceManager().getFileEntryRefForID(getFileID());
53
1.08M
}