[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