aboutsummaryrefslogtreecommitdiff
path: root/llvm/unittests/Support/ProcessTest.cpp
diff options
context:
space:
mode:
authorHaojian Wu <hokein.wu@gmail.com>2023-12-19 14:35:37 +0100
committerGitHub <noreply@github.com>2023-12-19 14:35:37 +0100
commit32aa7d823c8ae7183e65da2f29ed08a84d6a1b6b (patch)
treeec52cf160f43b1b09ecc2644085466e00652c93e /llvm/unittests/Support/ProcessTest.cpp
parent0d3d44522382028864d0223bc1d74929e17d5137 (diff)
downloadllvm-32aa7d823c8ae7183e65da2f29ed08a84d6a1b6b.zip
llvm-32aa7d823c8ae7183e65da2f29ed08a84d6a1b6b.tar.gz
llvm-32aa7d823c8ae7183e65da2f29ed08a84d6a1b6b.tar.bz2
[clang] Fix CTAD not work for C++ explicit type conversion (functional annotation). (#75779)
This fixes https://github.com/llvm/llvm-project/issues/64347. The CTAD for an aggregate class is missing to handle the explicit type conversion case, e.g. `TemplateFooClass(1, 2);`. Per C++ expr.type.conv p1, the deduced type is the return type of the deduction guide selected by the CTAD for the reminder. In the deduction implementation `DeduceTemplateSpecializationFromInitializer`, the parenthesized express-list case relies on the `ParenListExpr` parameter (default is nullptr), the AST `ParenListExpr` node is not built for all variant initializer cases (`BuildCXXTypeConstructorExpr`, `BuildCXXNew` etc), thus the deduction doesn't perform for these cases. This patch fixes it by removing the `ParenListExpr` and using the `Inits` instead (which also simplifies the interface and implementation).
Diffstat (limited to 'llvm/unittests/Support/ProcessTest.cpp')
0 files changed, 0 insertions, 0 deletions