nridge added a comment.

Thanks for looking at this! Sorry for the late response, I was travelling for a 
few weeks.

So far I've only had a chance to look at the tests.



================
Comment at: clang/test/CodeCompletion/concepts.cpp:34
+  // RUN: | FileCheck %s -check-prefix=DOT -implicit-check-not=xxx_t
+  // DOT: Pattern : [#convertible_to<double>#]aaa()
+  // DOT: Pattern : bb() (requires fix-it: {{.*}} to "->")
----------------
Doesn't the presence of the `x` mean we should only get results that start with 
`x`?

(Or, if "column 5" actually means we're completing right after the dot, why is 
the `x` present in the testcase at all -- just so that the line is 
syntactically well formed?)


================
Comment at: clang/test/CodeCompletion/concepts.cpp:35
+  // DOT: Pattern : [#convertible_to<double>#]aaa()
+  // DOT: Pattern : bb() (requires fix-it: {{.*}} to "->")
+  // DOT: Pattern : bbb()
----------------
Should we be taking completions from just one branch of a logical-or in a 
requirement?

To simplify the scenario a bit:

```
template <typename T>
  requires (requires(T t) { t.foo(); } || requires(T t) { t.bar(); })
void f(T t) {
  t.^
}
```

Do we want to be offering both `foo()` and `bar()` as completions here? 
Logically, it seems we only ought to offer completions from expressions that 
appear in _both_ branches of the logical-or (so, if `t.foo()` appeared as a 
requirement in both branches, we could offer `foo()`).


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D73649



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

Reply via email to