- Rework inspection execution order. Run several inspection tools on all suitable PSI elements in parallel. As soon as the inspection tool finishes all its elements, analyze the HighlightInfo delta and apply it immediately (see HighlightInfoUpdater). Thus, the inspection tool doesn't interfere with the other inspection tool, allowing fast tools to apply infos sooner.
- Increase parallelism of tools for visible area, tools for invisible area, tools for injected fragments, allowing them all to execute in parallel, thus reducing the FJP rampup/rampdown latency (JobLauncherImpl.processQueueAsync() FTW).
- Implement LIP-wide duplicate info elimination, now that all tools are independent. Fix corresponding tests messing with expected duplicate problems.
- Rework file-level highlights. They are stored now as a regular HighlightInfo/RangeHighlighter with textRange=entire file.
- HighlightInfo now has `toolId` field for discerning infos generated by different inspection tools/annotators/highlight visitors.
GitOrigin-RevId: bc85a1858754dec04cec74a79909f009681bda98
Workspace model classes were moved to different packages, but the order of import statements wasn't changed, so we have many files with unsorted imports. They are often become sorted when other changes are made in these files, and such unrelated modifications complicate reviewing and may cause merge conflicts.
GitOrigin-RevId: 827744c328ddb2ac3d08ce0bcb8f8e1bb30ac4e9
In this way:
- The collectChanges function, which expects an original snapshot as an argument, won't need an argument at all. And with this, we'll be sure that the snapshot is always the correct one.
- Also the method hasSameEntities(original: EntityStorage) won't need an argument as well.
- With the new API, we'll have a cache that is located right in the snapshot. To make this cache efficient, we'll need to pass it between snapshots. With storing the snapshot in builder, we'll be able to pass the cache from the original snapshot to the new one for operations like `snapshot.toBuilder().toSnapshot()`.
GitOrigin-RevId: fc0d21654eef9d3c5ce3bb51a302e2ad816703c1
Mentioning an author of a comment makes little sense since it can be easily found by 'Annotate' action. Also, it may give a false impression that only the author may address the problem described in the comment.
GitOrigin-RevId: 2aa52762b109f0d2f1a6ec6f7bf53f24b39c0997
It looks like 'getExternalDependenciesList' wasn't used since 45ad15bc36d29ca1, so the relevant code can be safely removed. This will fix UI freezes caused by calling ArtifactUtil.processPackagingElements on EDT.
GitOrigin-RevId: 04ab3c9e643f33ffa7aa03aa5906653c8a1b8718
1. Radiobuttons -> checkbox
2. Remove annotation class selector, keep only textual input field (decrease of usability but people would rarely type a class name explicitly there, as we have a quick-fix)
Part of IDEA-313775 Process remaining inspections that have swing options panel
GitOrigin-RevId: f481bf923209cecb668e3b41370b52af029b1ed6
If we create a subscription between before and after events, this may cause issues in code logic. Also, such issues will be really hard to debug.
I've reviewed the listeners of the workspace model in order to get rid of such problem.
See IDEA-324532 for details.
GitOrigin-RevId: c5b8c12691fa930d3f5f85af32052e0a22984d73