forked from OSchip/llvm-project
6f6c40a875
The solution is to favor the longest possible nest-name-specifier, and drop other alternatives by using the guard, per per C++ [basic.lookup.qual.general]. Motivated cases: ``` Foo::Foo() {}; // the constructor can be parsed as: // - Foo ::Foo(); // where the first Foo is return-type, and ::Foo is the function declarator // + Foo::Foo(); // where Foo::Foo is the function declarator ``` ``` void test() { // a very slow parsing case when there are many qualifers! X::Y::Z; // The statement can be parsed as: // - X ::Y::Z; // ::Y::Z is the declarator // - X::Y ::Z; // ::Z is the declarator // + X::Y::Z; // a declaration without declarator (X::Y::Z is decl-specifier-seq) // + X::Y::Z; // a qualifed-id expression } ``` Differential Revision: https://reviews.llvm.org/D130511 |
||
---|---|---|
.. | ||
Unit | ||
crash | ||
cxx | ||
.clang-format | ||
CMakeLists.txt | ||
check-cxx-bnf.test | ||
fuzzer.cpp | ||
glr-variant-start.cpp | ||
glr.cpp | ||
html-forest.c | ||
lex.c | ||
lit.cfg.py | ||
lit.local.cfg | ||
lit.site.cfg.py.in | ||
lr-build-basic.test | ||
lr-build-conflicts.test | ||
strip-directives.c |