================
@@ -323,19 +325,114 @@ struct TemplateParameterListBuilder {
     return *this;
   }
 
-  BuiltinTypeDeclBuilder &finalizeTemplateArgs() {
+  // The concept specialization expression (CSE) constructed in
+  // constructConceptSpecializationExpr is constructed so that it
+  // matches the CSE that is constructed when parsing the below C++ code:
+  //
+  // template<typename T>
+  // concept is_typed_resource_element_compatible = sizeof(T) <= 16;
----------------
bob80905 wrote:

The purpose of this change is to just verify concept validation works. A very 
simple constraint expression is used, size <= 16 bytes. This is tested by 
inspecting the AST, and seeing the CSE in the AST. It's also verified by 
running simple tests that fail when size > 16, and pass when <= 16. 
I wanted to keep things separate because I want the PR to be kept as atomic as 
possible. This PR accomplishes the single purpose of introducing concept 
infrastructure and testing concept validation.
I intend the next and final PR to finalize the constraint expression, which 
will involve adding a bunch of tests that test each corner case of the 
constraint expression. This will also be a sizeable PR, which I figured would 
be best kept separate.

https://github.com/llvm/llvm-project/pull/116413
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to