1*ec727ea7Spatrick //===--- ExpressionTraits.cpp - Expression Traits Support -----------------===// 2*ec727ea7Spatrick // 3*ec727ea7Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*ec727ea7Spatrick // See https://llvm.org/LICENSE.txt for license information. 5*ec727ea7Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*ec727ea7Spatrick // 7*ec727ea7Spatrick //===----------------------------------------------------------------------===// 8*ec727ea7Spatrick // 9*ec727ea7Spatrick // This file implements the expression traits support functions. 10*ec727ea7Spatrick // 11*ec727ea7Spatrick //===----------------------------------------------------------------------===// 12*ec727ea7Spatrick 13*ec727ea7Spatrick #include "clang/Basic/ExpressionTraits.h" 14*ec727ea7Spatrick #include "llvm/Support/ErrorHandling.h" 15*ec727ea7Spatrick #include <cassert> 16*ec727ea7Spatrick using namespace clang; 17*ec727ea7Spatrick 18*ec727ea7Spatrick static constexpr const char *ExpressionTraitNames[] = { 19*ec727ea7Spatrick #define EXPRESSION_TRAIT(Spelling, Name, Key) #Name, 20*ec727ea7Spatrick #include "clang/Basic/TokenKinds.def" 21*ec727ea7Spatrick }; 22*ec727ea7Spatrick 23*ec727ea7Spatrick static constexpr const char *ExpressionTraitSpellings[] = { 24*ec727ea7Spatrick #define EXPRESSION_TRAIT(Spelling, Name, Key) #Spelling, 25*ec727ea7Spatrick #include "clang/Basic/TokenKinds.def" 26*ec727ea7Spatrick }; 27*ec727ea7Spatrick getTraitName(ExpressionTrait T)28*ec727ea7Spatrickconst char *clang::getTraitName(ExpressionTrait T) { 29*ec727ea7Spatrick assert(T <= ET_Last && "invalid enum value!"); 30*ec727ea7Spatrick return ExpressionTraitNames[T]; 31*ec727ea7Spatrick } 32*ec727ea7Spatrick getTraitSpelling(ExpressionTrait T)33*ec727ea7Spatrickconst char *clang::getTraitSpelling(ExpressionTrait T) { 34*ec727ea7Spatrick assert(T <= ET_Last && "invalid enum value!"); 35*ec727ea7Spatrick return ExpressionTraitSpellings[T]; 36*ec727ea7Spatrick } 37