================ @@ -0,0 +1,32 @@ +// RUN: %clang_cc1 -fsyntax-only -verify -std=c++20 %s + +namespace GH49093 { + class B { + public: + static int a() { return 0; } // expected-note {{member is declared here}} + decltype(a< 0 >(0)) test; // expected-error {{member 'a' used before its declaration}} ---------------- a-tarasyuk wrote:
> I think it generally DOES make sense to try the lookup? In the case of viable functions, the checker tries to recover even when the candidate list is empty. https://github.com/llvm/llvm-project/blob/416c3ce0138ff4039dab13ff634ee6392b9a3c7b/clang/lib/Sema/SemaOverload.cpp#L14056-L14059 https://github.com/llvm/llvm-project/blob/416c3ce0138ff4039dab13ff634ee6392b9a3c7b/clang/lib/Sema/SemaOverload.cpp#L13844-L13857 Once the lookup is complete https://github.com/llvm/llvm-project/blob/df935ff4eca91013553edbf3ca1d45b568f6709f/clang/lib/Sema/SemaExpr.cpp#L2471 It identifies the expression as a dependent member https://github.com/llvm/llvm-project/blob/df935ff4eca91013553edbf3ca1d45b568f6709f/clang/lib/Sema/SemaExpr.cpp#L2490 This is the entry point for these kinds of names, where we can try to stop the recovery process that causes the crash. Or should we skip building recovery call expression entirely for such cases? https://github.com/llvm/llvm-project/pull/107786 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits