<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/89065>89065</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[clang-tidy] bugprone-lambda-function-name false positive
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
1aam2am1
</td>
</tr>
</table>
<pre>
Hi, I'm fixing my code and using this check for wrong function name prints, but fixing this error creates false positive.
How to reproduce:
```cpp
#include <iostream>
// Type your code here, or load an example.
int bug(int num) {
return [num](){
std::cout << __func__ << "\n";
return num;
}();
}
int fixed(int num) {
return [num, func=__func__](){
std::cout << func << "\n";
return num;
}();
}
int main()
{
bug(1);
fixed(1);
return 0;
}
```
Execute clang-tydy, with:
-checks=-*,bugprone-lambda-function-name
Result:
```
<[source>:5:22: warning: inside a lambda, '__func__' expands to the name of the function call operator; consider capturing the name of the enclosing function explicitly [bugprone-lambda-function-name]]
5 | std::cout << __func__ << "\n";
| ^
[<source>:11:23: warning: inside a lambda, '__func__' expands to the name of the function call operator; consider capturing the name of the enclosing function explicitly [bugprone-lambda-function-name]]
11 | return [num, func=__func__](){
|
```
Code execution result:
```
operator()
fixed
```
We can see that 'bug' function have a error and it is found.
But we can see that the fix in 'fixed' function, where we are capturing __func__ name inside lambda capture is also flagged, and it should not be.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzcVl1v8ygT_TXkZpQqhjhOLnKROK2e9_bVSntZYRjb7GKw-GiTf7_CH4lbdavquVzLsjEwh8PMnMHce9UYxCPJzyS_rHgMrXXHjPOO8i5bVVbejr8UoSX8j9Cig1pdlWmgu4GwEoEbCdGnntAqD6JF8TfU1sG7s6aBOhoRlDVgeIfQO2WCT1hVDDPSYIfOWQfCIQ_ooebaI_TWq6De8IlsLmRzGp-_7DsECw57Z2UUSNg0QHab8RZ9P_VQpozQUSIQVirrg0PeEfY8D78Q-gJ_3HqEm41u3E-LDhNB60BbLoEbwCvvej3TUCZAFRtC96llYkfoAUhxHkcBAByG6AyQ_JxG8wuhe0IPjyk-yMSanYSNIVEjrITX1-Sq19f5m1BK8tKkF1tgL_AT-H2IFPMyc1fqWfgtka3VFeWPidNyiB5hl5nbF3uZri-3lIx-czsAP9tRx5WZZk1TFghjlLIlxN0FH3sfLDZfrDYn1vj5fEURA4LQ3DTrcJO35Kl3FVrCTrAkCOtBDZ6wy5rQE6FlFZveWYNrzbtK8vWsjnVSx9L0_-ijDo_c_opI8mx-9ja6pIJnwk45Yafk4BO8c2eUaVJTGa-STmFcM5EltLiHlBaA154b6ZOsQoujUm09tO_yFVxrsD06Hqwj7AzCDrgOBO9DdKOQPxqjEdoOpeEOg9deK6GCvqUs-94d-SXd9wDlQIoSvk24H2toifThIvlcHPIzYeXSuVmWvMv-m97NsrtPfrcIkKL8Ok2HZ5lqKw7SSUzdp_z-aHL3xELZo3D_fYE_EQQ34BEhtDykKAz6Lx7uaflbitR41KRzSwVQHmobjZyK-zkGeP-ENERKXUGZBDoVkAfsoP50aiRD7nARsns-DnGbUmWMxjQLEwGuvYVa86ZJyOVMzbc2agnGBqjmw2clj0we2IGv8JgVGWN5sd2yVXvc7iqxF1QcON3V-f4gqwJZRXf5RmbFVh5W6kg3dLvZZkVGWUHZE893Yp_VPN8xUeVcku0GO670k9Zv3ZN1zUp5H_G4P2x2-UrzCrWffxLcMU1aV7HxZLvRygf_MAsq6OF3YqqQSt5IfoFv0_HTib-KTh_bEHqfUmQ4pxsV2lg9CdsR-pLWml7r3tm_UARCXwa-ntCXgfI_AQAA__8Y96JM">