forked from OSchip/llvm-project
b23c5e8c3d
template name is not visible to unqualified lookup. In order to support this without a severe degradation in our ability to diagnose typos in template names, this change significantly restructures the way we handle template-id-shaped syntax for which lookup of the template name finds nothing. Instead of eagerly diagnosing an undeclared template name, we now form a placeholder template-name representing a name that is known to not find any templates. When the parser sees such a name, it attempts to disambiguate whether we have a less-than comparison or a template-id. Any diagnostics or typo-correction for the name are delayed until its point of use. The upshot should be a small improvement of our diagostic quality overall: we now take more syntactic context into account when trying to resolve an undeclared identifier on the left hand side of a '<'. In fact, this works well enough that the backwards-compatible portion (for an undeclared identifier rather than a lookup that finds functions but no function templates) is enabled in all language modes. llvm-svn: 360308 |
||
---|---|---|
.. | ||
arcmt-test | ||
c-arcmt-test | ||
c-index-test | ||
clang-check | ||
clang-diff | ||
clang-extdef-mapping | ||
clang-format | ||
clang-format-vs | ||
clang-fuzzer | ||
clang-import-test | ||
clang-offload-bundler | ||
clang-refactor | ||
clang-rename | ||
diag-build | ||
diagtool | ||
driver | ||
libclang | ||
scan-build | ||
scan-build-py | ||
scan-view | ||
CMakeLists.txt |