Coverage Report

Created: 2020-10-24 06:27

/Users/buildslave/jenkins/workspace/coverage/llvm-project/clang/lib/Basic/TypeTraits.cpp
Line
Count
Source (jump to first uncovered line)
1
//===--- TypeTraits.cpp - Type Traits Support -----------------------------===//
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 type traits support functions.
10
//
11
//===----------------------------------------------------------------------===//
12
13
#include "clang/Basic/TypeTraits.h"
14
#include "llvm/Support/ErrorHandling.h"
15
#include <cassert>
16
using namespace clang;
17
18
static constexpr const char *TypeTraitNames[] = {
19
#define TYPE_TRAIT_1(Spelling, Name, Key) #Name,
20
#include "clang/Basic/TokenKinds.def"
21
#define TYPE_TRAIT_2(Spelling, Name, Key) #Name,
22
#include "clang/Basic/TokenKinds.def"
23
#define TYPE_TRAIT_N(Spelling, Name, Key) #Name,
24
#include "clang/Basic/TokenKinds.def"
25
};
26
27
static constexpr const char *TypeTraitSpellings[] = {
28
#define TYPE_TRAIT_1(Spelling, Name, Key) #Spelling,
29
#include "clang/Basic/TokenKinds.def"
30
#define TYPE_TRAIT_2(Spelling, Name, Key) #Spelling,
31
#include "clang/Basic/TokenKinds.def"
32
#define TYPE_TRAIT_N(Spelling, Name, Key) #Spelling,
33
#include "clang/Basic/TokenKinds.def"
34
};
35
36
static constexpr const char *ArrayTypeTraitNames[] = {
37
#define ARRAY_TYPE_TRAIT(Spelling, Name, Key) #Name,
38
#include "clang/Basic/TokenKinds.def"
39
};
40
41
static constexpr const char *ArrayTypeTraitSpellings[] = {
42
#define ARRAY_TYPE_TRAIT(Spelling, Name, Key) #Spelling,
43
#include "clang/Basic/TokenKinds.def"
44
};
45
46
static constexpr const char *UnaryExprOrTypeTraitNames[] = {
47
#define UNARY_EXPR_OR_TYPE_TRAIT(Spelling, Name, Key) #Name,
48
#define CXX11_UNARY_EXPR_OR_TYPE_TRAIT(Spelling, Name, Key) #Name,
49
#include "clang/Basic/TokenKinds.def"
50
};
51
52
static constexpr const char *UnaryExprOrTypeTraitSpellings[] = {
53
#define UNARY_EXPR_OR_TYPE_TRAIT(Spelling, Name, Key) #Spelling,
54
#define CXX11_UNARY_EXPR_OR_TYPE_TRAIT(Spelling, Name, Key) #Spelling,
55
#include "clang/Basic/TokenKinds.def"
56
};
57
58
0
const char *clang::getTraitName(TypeTrait T) {
59
0
  assert(T <= TT_Last && "invalid enum value!");
60
0
  return TypeTraitNames[T];
61
0
}
62
63
0
const char *clang::getTraitName(ArrayTypeTrait T) {
64
0
  assert(T <= ATT_Last && "invalid enum value!");
65
0
  return ArrayTypeTraitNames[T];
66
0
}
67
68
0
const char *clang::getTraitName(UnaryExprOrTypeTrait T) {
69
0
  assert(T <= UETT_Last && "invalid enum value!");
70
0
  return UnaryExprOrTypeTraitNames[T];
71
0
}
72
73
224
const char *clang::getTraitSpelling(TypeTrait T) {
74
224
  assert(T <= TT_Last && "invalid enum value!");
75
224
  return TypeTraitSpellings[T];
76
224
}
77
78
2
const char *clang::getTraitSpelling(ArrayTypeTrait T) {
79
2
  assert(T <= ATT_Last && "invalid enum value!");
80
2
  return ArrayTypeTraitSpellings[T];
81
2
}
82
83
74.7k
const char *clang::getTraitSpelling(UnaryExprOrTypeTrait T) {
84
74.7k
  assert(T <= UETT_Last && "invalid enum value!");
85
74.7k
  return UnaryExprOrTypeTraitSpellings[T];
86
74.7k
}