Main Motivation: Cross-file Content Assist
suggestions about the functions, methods or identifiers you can use in your current editor context.
[caption id="attachment_12178" align="aligncenter" width="533" caption="Cross-file Content Assist"][/caption]
Two components work together to achieve this goal:
- a fine-grained type inference analysis engine
- a coarse-grained dependency analysis engine
The inference engine parses your code and walks every declaration, statement and expression. This allows it to determine what identifiers are valid in a given context, and make good guesses about the kinds of things that may be stored in these variables. This information is then used to make content assist suggestions.
If you wanted to simply put all your code into one big file, then a good quality inferencer alone would be sufficient to provide some pretty good content assist. In reality, projects will be divided…