1//===--- ExpressionTraits.cpp - Expression 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 expression traits support functions.
10//
11//===----------------------------------------------------------------------===//
12
13#include "clang/Basic/ExpressionTraits.h"
14#include "llvm/Support/ErrorHandling.h"
15#include <cassert>
16using namespace clang;
17
18static constexpr const char *ExpressionTraitNames[] = {
19#define EXPRESSION_TRAIT(Spelling, Name, Key) #Name,
20#include "clang/Basic/TokenKinds.def"
21};
22
23static constexpr const char *ExpressionTraitSpellings[] = {
24#define EXPRESSION_TRAIT(Spelling, Name, Key) #Spelling,
25#include "clang/Basic/TokenKinds.def"
26};
27
28const char *clang::getTraitName(ExpressionTrait T) {
29 assert(T <= ET_Last && "invalid enum value!");
30 return ExpressionTraitNames[T];
31}
32
33const char *clang::getTraitSpelling(ExpressionTrait T) {
34 assert(T <= ET_Last && "invalid enum value!");
35 return ExpressionTraitSpellings[T];
36}
37