rsmith accepted this revision.
rsmith added a comment.
This revision is now accepted and ready to land.

Only minor comments, let me know if you'd like me to take another look after 
addressing these, or just go ahead and commit. Thanks!



================
Comment at: clang/lib/AST/ExprCXX.cpp:1676-1677
+    ConceptDecl *NamedConcept, const ASTTemplateArgumentListInfo 
*ArgsAsWritten,
+    ArrayRef<TemplateArgument> ConvertedArgs, bool IsSatisfied,
+    bool IsValueDependent)
+    : Expr(ConceptSpecializationExprClass, C.BoolTy, VK_RValue, OK_Ordinary,
----------------
Consider passing `IsSatisfied` and `IsValueDependent` as a single 
`Optional<bool>` (with `None` meaning value-dependent).


================
Comment at: clang/lib/AST/ExprCXX.cpp:1719-1720
+             ->containsUnexpandedParameterPacks());
+  setInstantiationDependent(IsInstantiationDependent);
+  setContainsUnexpandedParameterPack(ContainsUnexpandedParameterPack);
+}
----------------
Please add

```
assert((!isValueDependent() || isInstantiationDependent()) && "should not be 
value-dependent");
```

or similar. If we marked the expression as being value-dependent but it's not 
instantiation-dependent, things would go badly wrong later (we wouldn't 
substitute into it during instantiation, for example).


================
Comment at: clang/lib/Sema/SemaConcept.cpp:39
+
+  QualType Type = ConstraintExpression->getType().getNonReferenceType()
+                      .getUnqualifiedType();
----------------
No need for `getNonReferenceType()` here; expressions never have reference type.


================
Comment at: clang/lib/Sema/SemaConcept.cpp:40-41
+  QualType Type = ConstraintExpression->getType().getNonReferenceType()
+                      .getUnqualifiedType();
+  if (!Context.hasSameType(Type, Context.BoolTy)) {
+    Diag(ConstraintExpression->getExprLoc(),
----------------
I think it'd be a bit better to remove the `getUnqualifiedType()` call and use 
`hasSameUnqualifiedType` instead. That way the diagnostic below will preserve 
the cv-qualifications (along with any type sugar that you would need to remove 
to remove the qualifiers).


================
Comment at: clang/lib/Serialization/ASTReaderStmt.cpp:737
 
+void ASTStmtReader::VisitConceptSpecializationExpr(
+        ConceptSpecializationExpr *E) {
----------------
Please can you add some basic test coverage for the serialization code?


================
Comment at: clang/test/CXX/concepts-ts/expr/expr.prim/expr.prim.id/p3.cpp:1
-// RUN:  %clang_cc1 -std=c++2a -fconcepts-ts -verify %s
+// RUN:  %clang_cc1 -std=c++2a -fconcepts-ts -verify -triple x86_64-linux-gnu 
%s
 
----------------
Can we remove `-fconcepts-ts` from the `RUN` line?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D41217/new/

https://reviews.llvm.org/D41217



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
  • [PATCH] D41217: [... Saar Raz via Phabricator via cfe-commits
    • [PATCH] D412... Saar Raz via Phabricator via cfe-commits
    • [PATCH] D412... Richard Smith - zygoloid via Phabricator via cfe-commits

Reply via email to