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