MyDeveloperDay marked 7 inline comments as done.
MyDeveloperDay added inline comments.


================
Comment at: clang/lib/Format/UnwrappedLineParser.cpp:2281
+  if (FormatTok->Tok.is(tok::kw_requires))
+    parseRequires();
+}
----------------
miscco wrote:
> I believe this should be `parseConstraintExpression`  because that is the 
> term of art in the standard.
> 
> The requires expression is what is the `requieres { }` and that can be part 
> of an constraint expression 
I'm making some of these changes, the problem is with the form

`concept id = Foo<T> && Bar<T>`

in this case the 

`Foo<T> && Bar<T>` 

will be processed by the `parseStructualElement()` and this gets confused with 
the && being a `TT_PointerOrRefernce` and not a `TT_BinaryOperator` and that 
throws everything out.

I think parseStructualElement() is thinking `Foo<T> &&` is part of

`foo(Foo<T> &&abc);`

and not

`Foo<T> && abc<T>`

We need to know we are in a concept expression




================
Comment at: clang/lib/Format/UnwrappedLineParser.cpp:2314
+      nextToken();
+      if (FormatTok->Tok.is(tok::less)) {
+        while (!FormatTok->Tok.is(tok::greater)) {
----------------
miscco wrote:
> miscco wrote:
> > I guess you could use `parseBracedList(/*ContinueOnSemicolons=*/false, 
> > /*IsEnum=*/false,/*ClosingBraceKind=*/tok::greater);` here?
> To be more specific, I am concerned what happens if you have multiple 
> template arguments where a linebreak should occur. Is this still happening 
> here?
> 
> 
> ```
> template <typename someLongTypename1, typename someLongTypename2>
> concept someVeryLongConceptName = 
> someVeryLongConstraintName1<someLongTypename1 && someLongTypename2>;
> ```
This is formatted as

```
template <typename someLongTypename1, typename someLongTypename2>
concept someVeryLongConceptName =
    someVeryLongConstraintName1<someLongTypename1 && someLongTypename2>;
```


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

https://reviews.llvm.org/D79773



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to