[PATCH] D41217: [Concepts] Concept Specialization Expressions
Faisal Vali via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Mar 14 10:32:13 PDT 2018
faisalv added inline comments.
================
Comment at: include/clang/AST/ExprCXX.h:4416
+/// According to C++2a [expr.prim.id]p3 an id-expression that denotes the
+/// specialization of a concepts results in a prvalue of type bool.
+class ConceptSpecializationExpr final : public Expr {
----------------
Typo (Hubert): concepts -> concept
================
Comment at: include/clang/AST/ExprCXX.h:4419
+protected:
+ /// \brief The concept specialization this represents.
+ ConceptDecl *SpecializedConcept;
----------------
Hubert: The concept named.
================
Comment at: include/clang/AST/ExprCXX.h:4420
+ /// \brief The concept specialization this represents.
+ ConceptDecl *SpecializedConcept;
+
----------------
NamedConcept
================
Comment at: include/clang/Sema/Sema.h:5577
+ ConceptDecl *CTD,
+ const TemplateArgumentListInfo *TALI);
+
----------------
Hubert: clang-format this
================
Comment at: include/clang/Sema/Sema.h:5580
+ /// Check whether the given expression is a valid constraint expression.
+ /// A diagnostic is emmited if it is not, and false is returned.
+ bool CheckConstraintExpression(Expr *CE);
----------------
Hubert: Typo: emitted
================
Comment at: lib/AST/ExprCXX.cpp:1441
+ConceptSpecializationExpr::ConceptSpecializationExpr(ASTContext &C, Sema &S,
+ SourceLocation ConceptNameLoc,
+ ConceptDecl *CD,
----------------
Hubert: clang-format
================
Comment at: lib/AST/ExprCXX.cpp:1478
+ {
+ // We do not want error diagnostics escaping here.
+ Sema::SFINAETrap Trap(S);
----------------
Hubert: This needs a TODO: the idea is not to drop SFINAE errors, but to avoid instantiation that may trigger errors not in the immediate context of instantiation. The substitution needs to happen piecewise.
================
Comment at: lib/AST/ExprCXX.cpp:1485
+ // constraint is not satisfied.
+ IsSatisfied = false;
+ return true;
----------------
Hubert: The name of the function gives no indication that it modifies the expression node. The interface of the function extends past what is expected.
Repository:
rC Clang
https://reviews.llvm.org/D41217
More information about the cfe-commits
mailing list