Remove SymbolLinks.typeChecked #23
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Because multiple declarations of different kinds can be combined into a single symbol, the SymbolLinks.typeChecked flag gets overloaded to signal that an expensive task has been done. Unfortunately, for certain combinations of kinds, this flag actually prevents certain checks from ever executing. The only example I have found is a function and an interface. The function overload checks are hidden behind the flag, and so are the interface index constraint checks. So we only ever hit one of them.
This change removes the typeChecked flag, and instead only executes the checks when visiting the first declaration of the same kind as the node. That will ensure we only do the work once per symbol per kind.