Changeset View
Changeset View
Standalone View
Standalone View
clang/lib/Sema/SemaConcept.cpp
Show First 20 Lines • Show All 455 Lines • ▼ Show 20 Lines | case concepts::ExprRequirement::SS_ConstraintsNotSatisfied: { | ||||
ConceptSpecializationExpr *ConstraintExpr = | ConceptSpecializationExpr *ConstraintExpr = | ||||
Req->getReturnTypeRequirementSubstitutedConstraintExpr(); | Req->getReturnTypeRequirementSubstitutedConstraintExpr(); | ||||
if (ConstraintExpr->getTemplateArgsAsWritten()->NumTemplateArgs == 1) { | if (ConstraintExpr->getTemplateArgsAsWritten()->NumTemplateArgs == 1) { | ||||
// A simple case - expr type is the type being constrained and the concept | // A simple case - expr type is the type being constrained and the concept | ||||
// was not provided arguments. | // was not provided arguments. | ||||
Expr *e = Req->getExpr(); | Expr *e = Req->getExpr(); | ||||
S.Diag(e->getBeginLoc(), | S.Diag(e->getBeginLoc(), | ||||
diag::note_expr_requirement_constraints_not_satisfied_simple) | diag::note_expr_requirement_constraints_not_satisfied_simple) | ||||
<< (int)First << S.getDecltypeForParenthesizedExpr(e) | << (int)First << S.Context.getReferenceQualifiedType(e) | ||||
<< ConstraintExpr->getNamedConcept(); | << ConstraintExpr->getNamedConcept(); | ||||
} else { | } else { | ||||
S.Diag(ConstraintExpr->getBeginLoc(), | S.Diag(ConstraintExpr->getBeginLoc(), | ||||
diag::note_expr_requirement_constraints_not_satisfied) | diag::note_expr_requirement_constraints_not_satisfied) | ||||
<< (int)First << ConstraintExpr; | << (int)First << ConstraintExpr; | ||||
} | } | ||||
S.DiagnoseUnsatisfiedConstraint(ConstraintExpr->getSatisfaction()); | S.DiagnoseUnsatisfiedConstraint(ConstraintExpr->getSatisfaction()); | ||||
break; | break; | ||||
▲ Show 20 Lines • Show All 622 Lines • Show Last 20 Lines |