I cannot test ATM, but a quick scan of the patch suggests some tests:
```C char f(char c){ return c; } char c = f(')'); ```
For C++ [here](https://github.com/pedrib/geany/commit/6b6eaa2e68e8a64f2ebfd3c3f029a5bb4fe2b...) not just `const` but `override` and `final` and `noexcept` and `&&` and attributes and `-> return_type` can occur , see [here](https://en.cppreference.com/w/cpp/language/function) and [here](https://en.cppreference.com/w/cpp/language/member_functions).
Does it highlight constructors as functions even if their names are in the wordlist of types Geany supplies to the lexer?
It attempts to skip macro declarations, but are macro "calls" treated as function calls?
The rest got too hard to follow, maybe later.
Since (AFAICT) it can all be turned off with properties, the discussion of what the defaults for C++ should be might be a :bike: :house: depending on how well it does C++, noting that prototypes are already off by default for C++.