
This removes the delayed typo correction functionality from Clang (regular typo correction still remains) due to fragility of the solution. An RFC was posted here: https://discourse.llvm.org/t/rfc-removing-support-for-delayed-typo-correction/86631 and while that RFC was asking for folks to consider stepping up to be maintainers, and we did have a few new contributors show some interest, experiments show that it's likely worth it to remove this functionality entirely and focus efforts on improving regular typo correction. This removal fixes ~20 open issues (quite possibly more), improves compile time performance by roughly .3-.4% (https://llvm-compile-time-tracker.com/?config=Overview&stat=instructions%3Au&remote=AaronBallman&sortBy=date), and does not appear to regress diagnostic behavior in a way we wouldn't find acceptable. Fixes #142457 Fixes #139913 Fixes #138850 Fixes #137867 Fixes #137860 Fixes #107840 Fixes #93308 Fixes #69470 Fixes #59391 Fixes #58172 Fixes #46215 Fixes #45915 Fixes #45891 Fixes #44490 Fixes #36703 Fixes #32903 Fixes #23312 Fixes #69874
32 lines
1.1 KiB
C++
32 lines
1.1 KiB
C++
// RUN: %clang_cc1 -verify -fsyntax-only -fno-recovery-ast %s
|
|
// RUN: %clang_cc1 -verify -fsyntax-only -frecovery-ast %s
|
|
|
|
void foo(); // expected-note 2{{requires 0 arguments}}
|
|
class X {
|
|
decltype(foo(42)) invalid; // expected-error {{no matching function}}
|
|
};
|
|
// Should be able to evaluate sizeof without crashing.
|
|
static_assert(sizeof(X) == 1, "No valid members");
|
|
|
|
class Y {
|
|
typeof(foo(42)) invalid; // expected-error {{no matching function}}
|
|
};
|
|
// Should be able to evaluate sizeof without crashing.
|
|
static_assert(sizeof(Y) == 1, "No valid members");
|
|
|
|
class Z {
|
|
int array[sizeof(invalid())]; // expected-error {{use of undeclared identifier}}
|
|
};
|
|
// Should be able to evaluate sizeof without crashing.
|
|
static_assert(sizeof(Z) == 1, "No valid members");
|
|
|
|
constexpr int N = undef; // expected-error {{use of undeclared identifier}} \
|
|
expected-note {{declared here}}
|
|
template<int a>
|
|
class ABC {};
|
|
class T {
|
|
ABC<N> abc; // expected-error {{non-type template argument is not a constant expression}} \
|
|
expected-note {{initializer of 'N' is unknown}}
|
|
};
|
|
static_assert(sizeof(T) == 1, "No valid members");
|