When placing the cursor over a symbol resolvable by a language server (e.g. Rust's rls), pressing Ctrl does not underline the symbol and clicking the mouse in addition does not jump to the definition. Placing the cursor over a resolvable symbol and pressing F2, however, works.
The underlying problem is an inconsistency (or "impedance mismatch") between TextEditorWidgetPrivate::updateLink() and LanguageServerProtocol::Location::toLink(): While updateLink() checks for Link::hasValidLinkText(), toLink() doesn't fill Link's linkTextStart and linkTextEnd which Link::hasValidLinkText() expects to be filled.
It's not quite clear to me how the code should behave, otherwise I'd had provided a fix. Any help is welcome, though.