clang
20.0.0git
include
clang
AST
DependenceFlags.h
Go to the documentation of this file.
1
//===--- DependenceFlags.h ------------------------------------------------===//
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
#ifndef LLVM_CLANG_AST_DEPENDENCEFLAGS_H
9
#define LLVM_CLANG_AST_DEPENDENCEFLAGS_H
10
11
#include "
clang/Basic/BitmaskEnum.h
"
12
#include "llvm/ADT/BitmaskEnum.h"
13
#include <cstdint>
14
15
namespace
clang
{
16
struct
ExprDependenceScope
{
17
enum
ExprDependence
: uint8_t {
18
UnexpandedPack
= 1,
19
// This expr depends in any way on
20
// - a template parameter, it implies that the resolution of this expr may
21
// cause instantiation to fail
22
// - or an error (often in a non-template context)
23
//
24
// Note that C++ standard doesn't define the instantiation-dependent term,
25
// we follow the formal definition coming from the Itanium C++ ABI, and
26
// extend it to errors.
27
Instantiation
= 2,
28
// The type of this expr depends on a template parameter, or an error.
29
Type
= 4,
30
// The value of this expr depends on a template parameter, or an error.
31
Value
= 8,
32
33
// clang extension: this expr contains or references an error, and is
34
// considered dependent on how that error is resolved.
35
Error
= 16,
36
37
None
= 0,
38
All
= 31,
39
40
TypeValue
=
Type
|
Value
,
41
TypeInstantiation
=
Type
|
Instantiation
,
42
ValueInstantiation
=