"did you mean [builtin function]?" diagnostics print a useless declaration site (original) (raw)
Consider:
constexpr float A = __builtin_isinfinity();
The output is:
array.cpp:1570:21: error: use of undeclared identifier '__builtin_isinfinity'; did you mean '__builtin_isfinite'?
1570 | constexpr float A = __builtin_isinfinity();
| ^~~~~~~~~~~~~~~~~~~~
| __builtin_isfinite
array.cpp:1570:21: note: '__builtin_isfinite' declared here
array.cpp:1570:42: error: too few arguments to function call, expected 1, have 0
1570 | constexpr float A = __builtin_isinfinity();
| ~~~~~~~~~~~~~~~~~~~~~^
2 errors generated.
The "note: '__builtin_isfinite' declared here" line is useless and confusing - It's not declared there at all and in fact is declared nowhere since it's a builtin function.
We should simply not be adding this note for builtin functions.