- add more tests (the test added in https://github.com/llvm/llvm-project/commit/2f448467e4254ddc3191136c968e6054bc009b88 is weak);
- improve the MyTemplate<type_typo, int>(); case, with this patch, typo correction could suggest type decls, and no regressions found.
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Unit Tests
Event Timeline
clang/test/SemaCXX/typo-correction.cpp | ||
---|---|---|
614 | I'm not sure this comment was addressed? |
We're seeing the same issue mentionned in PR45498, but with the repro below. git bisect points to this patch. Could anyone please possibly confirm? Simply build clang with -DLLVM_ENABLE_ASSERTIONS=ON.
// compile with: clang-cl /c a.cpp template < a > struct b; template < bool a, class > using c = b< a >; template < class > using d = void ; template < class, class, class = void > bool e template < class f, class g > bool e< f, g, d< decltype(h(g())) > > template < class f, class g > void i(f, g ) { e< f, g > } template < class _BidIt2, c< e< _BidIt, _BidIt2 >, int > = 0 > void h(_BidIt2) short do_tolower__Last { i(do_tolower__First, do_tolower__Last) }
thanks for the testcase. I'm not sure the patch is the root cause -- from the Bugzilla thread, the issue was reported in April which is prior to this patch.
btw, the issue seems to be gone on the trunk, I don't reproduce them with clang building from the trunk, I guess it might be fixed by some patches after llvm-11.
Thanks for getting back! Just for the record, bisecting between the llvmorg-12-init git tag and rG637f19c36b3 leads to this fix: D87853.
commit cffb0dd54d41d8e249d2009467c4beb5b681ba26 Author: Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Date: Mon Oct 12 15:58:52 2020 -0700 [SemaTemplate] Stop passing insertion position around during VarTemplate instantiation They can get stale at use time because of updates from other recursive specializations. Instead, rely on the existence of previous declarations to add the specialization. Differential Revision: https://reviews.llvm.org/D87853
I was able to cherry-pick it cleanly on release/11.x and that solves our issue.
are these one testcase or two?
If they're independent, please use different identifiers to avoid confusion