<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/104585>104585</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
misc-include-cleaner breaks code
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
ben-freist
</td>
</tr>
</table>
<pre>
I hope this is the right channel, I'm getting incorrect behaviour from clang-tidy on code that uses ICU.
I'm using ubuntu 22.04, I've tried clang-tidy-17, clang-tidy-18 and I built one myself based on (22bc9db92b46965882b1c77aebc86430149b0912), the results are the same for all three.
CMakeLists.txt:
```
cmake_minimum_required(VERSION 3.12)
project(tidy_bug)
find_package(ICU 50 COMPONENTS uc REQUIRED)
add_library(my_lib file.cpp)
target_link_libraries(my_lib ICU::uc)
```
file.cpp
```
#include <utility>
#include <unicode/uchar.h>
#include <string_view>
bool function(std::string_view input)
{
size_t res = 0;
char const * const s = input.data();
auto const length = static_cast<int32_t>(input.size());
int32_t pos = 0;
UChar32 c;
U8_NEXT(s, pos, length, c);
return u_isWhitespace(c);
}
```
I'm using ICU version 70.1.
I'm building the project like this:
`cmake -DCMAKE_CXX_COMPILER=clang++-18 -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_CXX_STANDARD=20 ..`
And I'm applying clang-tidy like this:
`clang-tidy -p build/ --config='{"Checks": "misc-include-cleaner"}' --fix file.cpp`.
The result has the includes `unicode/umachine.h`, `unicode/utf8.h` and `unicode/urename.h` none of which contain `u_isWhitespace`.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx0VV1v6jgQ_TXmZUQUbCDhgQdKQEJ7S7u03e0-RY4zJF4ch_VH72V__cohLVCxUhTHnjPHM86cMbdWVhpxTiYPZJINuHd1a-YF6uHeoLRuULTlab6Buj0iuFpakBZcjWBkVTsQNdcaFaFL2BCaNFChc1JXILVojUHhoMCaf8jWG9ibtgGhuK6GTpYnaDWItgy03IG3aGGzfItInJF4cX6fOb0NjL7w2nmgNIrHn_t9IDgjsbxiHY6SYL1eSIHrEjZQeKkctBqhOVlUeyi4xTKEQWhKaSFmZTGjxXg6m07SlBYjkSQcC5FOxywejWdFPBtRQmeBvzsCtF45C9xgN7e8Qdi3BrhS4GqDeJPM8pEf8Ie0zkbulyOsXybTuH-6qWj4AfNGatn4Jjf4j5cGS0LTP1a7l83TFlh0DuKK-Wjav1E4QtOQcF746htgL3WZH7k48AoJTTfLN5jEsHx6fH7arravL-AF7Fa_v212q-zLlZdlrmRhuDkRmjanMIG9VBiJ4_EL5bip0OVK6kOPlmgv-M3yLWTKFl5cYrrN-DPEnvguhDKphfIlAmFL76SS7kTY6q5Vy1BVhK69qLmJ6v_BWWekrvIPiT8viO5dtK2CvdfCyVYTmlpXnnO4cgGpj95dUkoezh8AAFb-i7kL5QGEZRATdmUMMYFotXVA6KL_OgM7yqjkjhOaBuprP-5d26MV6srVnYt13EmRC24dYUupHaO5C-nQ9MwWYunZvhH2YDi298J8W9bcMAridjXNt6v313AmQQTHthvO8XSq-76JQeeNBp9L-2ctHdojFyGeGyBJsrt__Vr9oWQ_0FjZakjiaHSnTQR5lwEbtNhLApQ8nPvWtd46jcEwWz4uflvly_f3PEhh82O1IyzrOgehD4Q-hNbxiXp42_zI8te_nleEZTtUyO2FYvX-_LR7_WQJ4-Nim70Qlj1tb_Z5eV1ss8UuIyyjMUAUfVPBIjSqLht-PKpTyOaqYd5P5mIfHs-HQOgahkPR6r2sCMsITUJ9UrqsURwsoZSwBRBKG2nFsJfEUCjkGk2wJsEFhsO9_HUR_DS-OfPXrwYINT9fCT2TBTKNr1TYcFFLjVEdcqXLb1a3TztL16NvTQY1b85-oEPbbvfws5aiDjpwXOoOf1ta0zgalHNWztiMD3A-SihLR_FonAzqOY_3sxLHMZvOSoxHnKUxJrMJT8qEIp3uB3JOYzqO09F0RONZnESM4pSVjDM2xUKwKRnH2HCpIqU-mqg11UBa63E-iseTdDJQvEBlu7uUUh2aRLCGE51kAzMPTsPCV5aMY9XdA180TjqF83v_AwqD_GC7m3LgjZrXzh27AqBrQteVdLUvItE2hK4DXT8Mv-6EdReEJXTdR_kxp_8FAAD__8CJZP0">