usaxena95 added a comment.

> starting a line with an opening paren is pretty weird!)

I do not think this is weird. On the contrary, this is more readable to me and 
separates the requires clause from the parameters list. For example this one 
looks so much better:

  // trunk.
  template <typename T>
  void func() {
    auto x = []<typename U>
      requires Foo<T> && Foo<T>(T t, U u) requires BarBar<U> && BarBar<U> ||
                   BarBar<U>
    {
      return u + t;
    };
  }

  // patch.
  template <typename T> void func() {
    auto x = []<typename U>
      requires Foo<T> && Foo<T>
    (T t, U u)
      requires BarBar<U> && BarBar<U> || BarBar<U>
    { return u + t; };
  }

Discussion on wrapping the lambda body with single statement. FWIW: I do not 
think this is a regression and we are fixing things as seen in my first example.

Another point:
While testing this patch, the following still fails to recognise. Might be 
something special with `true`.

  auto y = [&]<typename Callable>
      requires true(Callable && callable)
    { static_cast<void>(callable); };



================
Comment at: clang/unittests/Format/TokenAnnotatorTest.cpp:1352
+
+  // Both at once? Probably not even valid.
+  Tokens = annotate("[] <typename T> requires Foo<T> (T t) requires Bar<T> 
{}");
----------------
This is valid and is accepted by the compilers https://godbolt.org/z/EPbrWbrsv


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D145642

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

Reply via email to