<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/118799>118799</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[Clang][AST] How to dump qualified name with more information
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
lifengxiang1025
</td>
</tr>
</table>
<pre>
For example:
```
template<typename T>
class A{
public:
T t;
A(T t) : t(t) {}
};
template<typename T>
auto foo(T t) {
return [tt = t](){return tt;};
}
int bar(int a, int b, int c) {
auto lambda1 = [](int a, int b) {
return a + b;
};
auto lambda2 = [&]() {
return a + b + c;
};
A<decltype(foo(lambda1))> a1(foo(lambda1));
A<decltype(foo(lambda2))> a2(foo(lambda2));
return a1.t()(a, b) + a2.t()();
}
int main() {
return bar(1, 2, 3);
}
```
When I dump the qualified name by `QualifiedName(clang::TypeName::getFullyQualifiedName(ctx_->getRecordType(decl), *ctx_, ctx_->getPrintingPolicy(), true))`, there are two same qualified name:
```
::A<(lambda at test3.cpp:10:12)>
::A<(lambda at test3.cpp:10:12)>
```
correspond to:
```
A<decltype(foo(lambda1))> a1(foo(lambda1));
A<decltype(foo(lambda2))> a2(foo(lambda2));
```
How can I dump more information about lambda1 and lambda2? I initially want to use `QualifiedName` to represent one struct type until I met this situation.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVVGP4yYQ_jWTl9FFNsSx8-AHO9mo-1Jd25X6WGFMHCoMLoxvN_--wk5y3s3dVapOiggwzPfNfDMYEYLurFIlZDVkh5UY6ex8afRJ2e5NC9ulCctWjWsv5dF5VG-iH4wCXkFSwTa5_pKKVD8YQQr4ni6DsqJX-AL8CZJKGhECVpDXkFTD2BgtZ39ExBck4PV1UQEr4gbbIfAqTop5kdeQHyJjfphP_5hRjOTw5NwCLr9xeEWjtwhZTYTAD0iQHYAVwHaQ11crTUHdyWbupNKWsBEeWBFnAtgep63bRL6nmsIwom9akU5Us8jfcF96LYIUCKzG5qtAy_w_MLA7A9veM_oh7DTK74NXwPetkiaqC6yY9bymE9ViO-BPGOffttX_jcMWOOx7tgnnFnq6pmuxWDEpOKvHahRsYbo7vqtdL7R9EOaKPNc1jZAsDvwjxKLZ_zwri8_Yjv2AdFb4zyiMPmnV4tSFzQVhm_x22_xV9DFvaYTtYuPz6uUyqGl3WnWKjqMxlwcHevvrE_CnTtHvSjrfvswCRi2nLPcIrIqn4nRx-rPXlrTtPjuj5eWmyR7Jj-oq6jaZNs7KKxReIb06DDH296k83vM55FjSe6FQEJIKxNdyGIBXaRIHNtf1f7osGKXzXoXB2RbJPQb0M7r0Z3ToMqZf3CtKcW-R3nmF2p6c7wVpZ1E0bqT7l0HY9naHgR_xGbXVpIUxF3wVlpAcjkE9ttQ2iSavBq-CsoTOKgzkR0kYE8HRkjb4jL0ipLMOGDSNUwBrSKpVW_J2x3dipco053yTbIrdZnUui03RNLLNVF7ssqbZNqxR21zuUpWeilMhV7pkCdukLMlSzlLO1zJpZLPlkmd5dkrTHDaJ6oU2a2O-9Gvnu5UOYVRlmhb5brcyolEmTC8OY_OtYCw-Pr6MDp-asQuwSYwOFL5CkCYzPVP7ySM7QFZXf7xAdsAoN7lZ6w9X8VXT-UH_1ehNeSYaQmwndgR27DSdx2YtXQ_sGDmvf58G7_5WkoAdpxwCsOM1jS8l-zcAAP__gIgVNw">