clang 22.0.0git
clang::concepts::ExprRequirement Class Reference

A requires-expression requirement which queries the validity and properties of an expression ('simple' and 'compound' requirements). More...

#include "clang/AST/ExprConcepts.h"

Inheritance diagram for clang::concepts::ExprRequirement:
[legend]

Classes

class  ReturnTypeRequirement

Public Types

enum  SatisfactionStatus {
  SS_Dependent , SS_ExprSubstitutionFailure , SS_NoexceptNotMet , SS_TypeRequirementSubstitutionFailure ,
  SS_ConstraintsNotSatisfied , SS_Satisfied
}
Public Types inherited from clang::concepts::Requirement
enum  RequirementKind { RK_Type , RK_Simple , RK_Compound , RK_Nested }

Public Member Functions

 ExprRequirement (Expr *E, bool IsSimple, SourceLocation NoexceptLoc, ReturnTypeRequirement Req, SatisfactionStatus Status, ConceptSpecializationExpr *SubstitutedConstraintExpr=nullptr)
 Construct a compound requirement.
 ExprRequirement (SubstitutionDiagnostic *E, bool IsSimple, SourceLocation NoexceptLoc, ReturnTypeRequirement Req={})
 Construct a compound requirement whose expression was a substitution failure.
bool isSimple () const
bool isCompound () const
bool hasNoexceptRequirement () const
SourceLocation getNoexceptLoc () const
SatisfactionStatus getSatisfactionStatus () const
bool isExprSubstitutionFailure () const
const ReturnTypeRequirementgetReturnTypeRequirement () const
ConceptSpecializationExprgetReturnTypeRequirementSubstitutedConstraintExpr () const
SubstitutionDiagnosticgetExprSubstitutionDiagnostic () const
ExprgetExpr () const
Public Member Functions inherited from clang::concepts::Requirement
 Requirement (RequirementKind Kind, bool IsDependent, bool ContainsUnexpandedParameterPack, bool IsSatisfied=true)
RequirementKind getKind () const
bool isSatisfied () const
void setSatisfied (bool IsSatisfied)
void setDependent (bool IsDependent)
bool isDependent () const
void setContainsUnexpandedParameterPack (bool Contains)
bool containsUnexpandedParameterPack () const

Static Public Member Functions

static bool classof (const Requirement *R)

Public Attributes

friend ASTStmtReader
friend ASTStmtWriter

Detailed Description

A requires-expression requirement which queries the validity and properties of an expression ('simple' and 'compound' requirements).

Definition at line 282 of file ExprConcepts.h.

Member Enumeration Documentation

◆ SatisfactionStatus

Enumerator
SS_Dependent 
SS_ExprSubstitutionFailure 
SS_NoexceptNotMet 
SS_TypeRequirementSubstitutionFailure 
SS_ConstraintsNotSatisfied 
SS_Satisfied 

Definition at line 284 of file ExprConcepts.h.

Constructor & Destructor Documentation

◆ ExprRequirement() [1/2]

concepts::ExprRequirement::ExprRequirement ( Expr * E,
bool IsSimple,
SourceLocation NoexceptLoc,
ReturnTypeRequirement Req,
SatisfactionStatus Status,
ConceptSpecializationExpr * SubstitutedConstraintExpr = nullptr )

Construct a compound requirement.

Parameters
Ethe expression which is checked by this requirement.
IsSimplewhether this was a simple requirement in source.
NoexceptLocthe location of the noexcept keyword, if it was specified, otherwise an empty location.
Reqthe requirement for the type of the checked expression.
Statusthe satisfaction status of this requirement.

Definition at line 119 of file ASTConcept.cpp.

References clang::concepts::Requirement::containsUnexpandedParameterPack(), clang::concepts::ExprRequirement::ReturnTypeRequirement::isEmpty(), clang::concepts::ExprRequirement::ReturnTypeRequirement::isTypeConstraint(), clang::concepts::Requirement::Requirement(), clang::concepts::Requirement::RK_Compound, clang::concepts::Requirement::RK_Simple, SS_Dependent, SS_Satisfied, and SS_TypeRequirementSubstitutionFailure.

◆ ExprRequirement() [2/2]

concepts::ExprRequirement::ExprRequirement ( SubstitutionDiagnostic * E,
bool IsSimple,
SourceLocation NoexceptLoc,
ReturnTypeRequirement Req = {} )

Construct a compound requirement whose expression was a substitution failure.

The requirement is not satisfied.

Parameters
Ethe diagnostic emitted while instantiating the original expression.
IsSimplewhether this was a simple requirement in source.
NoexceptLocthe location of the noexcept keyword, if it was specified, otherwise an empty location.
Reqthe requirement for the type of the checked expression (omit if no requirement was specified).

Definition at line 137 of file ASTConcept.cpp.

References clang::concepts::Requirement::containsUnexpandedParameterPack(), false, clang::concepts::Requirement::isDependent(), clang::concepts::ExprRequirement::ReturnTypeRequirement::isEmpty(), clang::concepts::Requirement::Requirement(), clang::concepts::Requirement::RK_Compound, clang::concepts::Requirement::RK_Simple, and SS_ExprSubstitutionFailure.

Member Function Documentation

◆ classof()

◆ getExpr()

◆ getExprSubstitutionDiagnostic()

SubstitutionDiagnostic * clang::concepts::ExprRequirement::getExprSubstitutionDiagnostic ( ) const
inline

◆ getNoexceptLoc()

SourceLocation clang::concepts::ExprRequirement::getNoexceptLoc ( ) const
inline

◆ getReturnTypeRequirement()

◆ getReturnTypeRequirementSubstitutedConstraintExpr()

ConceptSpecializationExpr * clang::concepts::ExprRequirement::getReturnTypeRequirementSubstitutedConstraintExpr ( ) const
inline

◆ getSatisfactionStatus()

SatisfactionStatus clang::concepts::ExprRequirement::getSatisfactionStatus ( ) const
inline

◆ hasNoexceptRequirement()

bool clang::concepts::ExprRequirement::hasNoexceptRequirement ( ) const
inline

Definition at line 392 of file ExprConcepts.h.

◆ isCompound()

bool clang::concepts::ExprRequirement::isCompound ( ) const
inline

◆ isExprSubstitutionFailure()

bool clang::concepts::ExprRequirement::isExprSubstitutionFailure ( ) const
inline

◆ isSimple()

bool clang::concepts::ExprRequirement::isSimple ( ) const
inline

Member Data Documentation

◆ ASTStmtReader

friend clang::concepts::ExprRequirement::ASTStmtReader

Definition at line 362 of file ExprConcepts.h.

◆ ASTStmtWriter

friend clang::concepts::ExprRequirement::ASTStmtWriter

Definition at line 363 of file ExprConcepts.h.


The documentation for this class was generated from the following files: