* Add support of contextual quick info
* Avoid document comment map
* Make lint happy
Co-authored-by: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com>
Previously, getJSDocCommentAndTags could recur up to four times if any
of four predicates matched. However, to avoid duplicates, the predicates
have been tuned to be mutually exclusive, which means that the recursion
can be turned into a while loop. The while loop is much simpler and
safer, since it is guaranteed to only walk up the tree one time. In
addition, the extra check that adds jsdoc from initializers only runs
once, before the loop, further reducing the opportunity for duplicate
jsdocs.
I thought about further simplifying the code that gets the next node to
check, but to know when to stop the loop, I'd need a predicate that is
as complicated as the code in `getNextJSDocCommentLocation`, so I kept
the existing code, just reordering it for compactness.
i.e. use "var v: string" instead of "(var) v: string".
The parens case should only be used when we're using an english description instead of
an actual language construct.