llvm/clang/test/SemaTemplate/recovery-crash-cxx20.cpp

// RUN: %clang_cc1 -fsyntax-only -verify -std=c++20 %s

namespace GH49093 {
  class B {
  public:
    static int a() { return 0; } // expected-note {{declared as a non-template here}}
    decltype(a< 0 >(0)) test;    // expected-error {{'a' does not refer to a template}}
  };

  struct C {
      static int a() { return 0; } // expected-note {{declared as a non-template here}}
      decltype(a < 0 > (0)) test;  // expected-error {{'a' does not refer to a template}}
  };

  void test_is_bool(bool t) {}
  void test_is_bool(int t) {}

  int main() {
    B b;
    test_is_bool(b.test);

    C c;
    test_is_bool(c.test);
  }
}

namespace GH107047 {
  struct A {
    static constexpr auto test() { return 1; } // expected-note {{declared as a non-template here}}
    static constexpr int s = test< 1 >();      // expected-error {{'test' does not refer to a template}}
  };
}