8#ifndef LLVM_CLANG_AST_DEPENDENCEFLAGS_H
9#define LLVM_CLANG_AST_DEPENDENCEFLAGS_H
12#include "llvm/ADT/BitmaskEnum.h"
82#define LLVM_COMMON_DEPENDENCE(NAME) \
83 struct NAME##Scope { \
84 enum NAME : uint8_t { \
91 DependentInstantiation = Dependent | Instantiation, \
94 LLVM_MARK_AS_BITMASK_ENUM(Error) \
97 using NAME = NAME##Scope::NAME;
102#undef LLVM_COMMON_DEPENDENCE
195 return translate(V,
UnexpandedPack, TypeDependence::UnexpandedPack) |
197 translate(V,
Dependent, TypeDependence::Dependent) |
198 translate(V,
Error, TypeDependence::Error) |
203 return translate(V,
UnexpandedPack, ExprDependence::UnexpandedPack) |
205 translate(V,
Type, ExprDependence::Type) |
206 translate(V,
Value, ExprDependence::Value) |
207 translate(V,
Error, ExprDependence::Error);
211 return translate(V,
UnexpandedPack, NNSDependence::UnexpandedPack) |
213 translate(V,
Dependent, NNSDependence::Dependent) |
214 translate(V,
Error, NNSDependence::Error);
218 return translate(V,
UnexpandedPack, TADependence::UnexpandedPack) |
220 translate(V,
Dependent, TADependence::Dependent) |
221 translate(V,
Error, TADependence::Error);
225 return translate(V,
UnexpandedPack, TNDependence::UnexpandedPack) |
227 translate(V,
Dependent, TNDependence::Dependent) |
228 translate(V,
Error, TNDependence::Error);
234 template <
typename T,
typename U>
235 static U translate(
T Bits,
T FromBit,
U ToBit) {