================
@@ -323,30 +324,127 @@ struct TemplateParameterListBuilder {
         S.Context, Builder.Record->getDeclContext(), SourceLocation(),
         SourceLocation(), /* TemplateDepth */ 0, Position,
         &S.Context.Idents.get(Name, tok::TokenKind::identifier),
-        /* Typename */ false,
-        /* ParameterPack */ false);
+        /* Typename */ true,
+        /* ParameterPack */ false,
+        /* HasTypeConstraint*/ false);
     if (!DefaultValue.isNull())
       Decl->setDefaultArgument(
           S.Context, S.getTrivialTemplateArgumentLoc(DefaultValue, QualType(),
                                                      SourceLocation()));
-
     Params.emplace_back(Decl);
     return *this;
   }
 
-  BuiltinTypeDeclBuilder &finalizeTemplateArgs() {
+  /*
+  The concept specialization expression (CSE) constructed below 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;
+
+  template<typename element_type> requires
+  is_typed_resource_element_compatible<element_type>
+
+  struct RWBuffer {
+      element_type Val;
----------------
bob80905 wrote:

I agree that when parsing the C++ code in the comment, it produces more of the 
AST than the function is producing, but I still believe that including that 
extra context in the comments is helpful. The C++ code adds the structure 
"RWBuffer", and though it isn't being produced by 
`constructConceptSpecializationExpr`, it helps to know what code can be copy 
pasted into godbolt, for example, to see the AST that would be produced. 
I had originally wanted to paste the AST that would be produced, but figured 
getting the source code would help explain the code better and also allow those 
who are interested to get the AST from the code.

The first point of the comment says that 
"The concept specialization expression (CSE) constructed below is constructed
so that it matches the CSE that is constructed when parsing
the below C++ code:" 
Which is still accurate. The code in the function isn't claiming to be 
responsible for the whole AST. I will reword it slightly for more clarity.

For your last 2 questions, yes I think your statements are accurate.

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

Reply via email to