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