
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
45 lines
2.5 KiB
C
45 lines
2.5 KiB
C
// RUN: %clang_cc1 -fsyntax-only -std=gnu11 -verify=supported %s
|
||
// RUN: %clang_cc1 -fsyntax-only -std=c11 -DUNICODE -fraw-string-literals -verify=supported %s
|
||
// RUN: %clang_cc1 -fsyntax-only -std=gnu89 -verify=unsupported %s
|
||
// RUN: %clang_cc1 -fsyntax-only -std=c11 -DUNICODE -verify=unsupported %s
|
||
// RUN: %clang_cc1 -fsyntax-only -std=gnu11 -DUNICODE -fno-raw-string-literals -verify=unsupported %s
|
||
|
||
// RUN: %clang_cc1 -x c++ -fsyntax-only -Wno-unused -std=c++03 -verify=unsupported,cxx-unsupported %s
|
||
// RUN: %clang_cc1 -x c++ -fsyntax-only -Wno-unused -std=gnu++03 -verify=unsupported,cxx-unsupported %s
|
||
// RUN: %clang_cc1 -x c++ -fsyntax-only -Wno-unused -std=c++03 -fraw-string-literals -verify=supported %s
|
||
// RUN: %clang_cc1 -x c++ -fsyntax-only -Wno-unused -std=gnu++03 -fraw-string-literals -verify=supported %s
|
||
// RUN: %clang_cc1 -x c++ -fsyntax-only -Wno-unused -std=c++11 -DUNICODE -verify=supported,cxx %s
|
||
// RUN: %clang_cc1 -x c++ -fsyntax-only -Wno-unused -std=gnu++11 -DUNICODE -verify=supported,cxx %s
|
||
// RUN: %clang_cc1 -x c++ -fsyntax-only -Wno-unused -std=c++11 -DUNICODE -fraw-string-literals -verify=supported,yes %s
|
||
// RUN: %clang_cc1 -x c++ -fsyntax-only -Wno-unused -std=gnu++11 -DUNICODE -fraw-string-literals -verify=supported,yes %s
|
||
// RUN: %clang_cc1 -x c++ -fsyntax-only -Wno-unused -std=c++11 -DUNICODE -fno-raw-string-literals -verify=supported,no %s
|
||
// RUN: %clang_cc1 -x c++ -fsyntax-only -Wno-unused -std=gnu++11 -DUNICODE -fno-raw-string-literals -verify=supported,no %s
|
||
|
||
// GCC supports raw string literals in C99 and later in '-std=gnuXY' mode; we
|
||
// additionally provide '-f[no-]raw-string-literals' to enable/disable them
|
||
// explicitly in C.
|
||
//
|
||
// We do not allow disabling raw string literals in C++ mode if they’re enabled
|
||
// by the language standard, i.e. in C++11 or later.
|
||
|
||
// Driver warnings.
|
||
// yes-warning@* {{ignoring '-fraw-string-literals'}}
|
||
// no-warning@* {{ignoring '-fno-raw-string-literals'}}
|
||
|
||
void f() {
|
||
(void) R"foo()foo"; // unsupported-error {{use of undeclared identifier 'R'}}
|
||
(void) LR"foo()foo"; // unsupported-error {{use of undeclared identifier 'LR'}}
|
||
|
||
#ifdef UNICODE
|
||
(void) uR"foo()foo"; // unsupported-error {{use of undeclared identifier 'uR'}}
|
||
(void) u8R"foo()foo"; // unsupported-error {{use of undeclared identifier 'u8R'}}
|
||
(void) UR"foo()foo"; // unsupported-error {{use of undeclared identifier 'UR'}}
|
||
#endif
|
||
}
|
||
|
||
// supported-error@* {{missing terminating delimiter}}
|
||
// supported-error@* {{expected expression}}
|
||
// supported-error@* {{expected ';' after top level declarator}}
|
||
#define R "bar"
|
||
const char* s = R"foo(";
|