Add desugared type to hover when the desugared type and the pretty-printed type are different.
c++
template<typename T>
struct TestHover {
using Type = T;
};
int main() {
TestHover<int>::Type a;
}variable a
Type: TestHover<int>::Type (aka 'int')
instead of these ad-hoc pairs, I'd suggest introducing a common struct like:
Optional<PrintedType> Type; struct PrintedType { std::string Type; Optional<std::string> AKA; };that way producing function like printType and formatting functions that produce "foo (aka bar)" can more simply be shared between instances of this pattern