Distinguish between template parameter substitutions that are forming
authorRichard Smith <richard@metafoo.co.uk>
Tue, 23 Jun 2020 02:30:36 +0000 (19:30 -0700)
committerRichard Smith <richard@metafoo.co.uk>
Tue, 23 Jun 2020 02:34:52 +0000 (19:34 -0700)
commit9f9373f86d2d13b8c9f106863ce70ace69abf388
tree1931028b0f6a36dd71949946ad5ab0c0fb1425d4
parent19df9e2959cfa3f25d798bd842df798e2b75f1b2
Distinguish between template parameter substitutions that are forming
specializations and those that are done as part of rewrites.

Do not create Subst* nodes in the latter. We previously had a hybrid of
these two behaviors where we would only create some Subst* nodes but not
others during deduction guide rewrites.

No functional change intended, but the resulting ASTs are more
principled.
clang/include/clang/Sema/Template.h
clang/lib/Sema/SemaTemplate.cpp
clang/lib/Sema/SemaTemplateInstantiate.cpp
clang/test/SemaTemplate/deduction-guide.cpp