d0f27293ce
Work towards https://github.com/dart-lang/sdk/issues/62686 `dart analyze` uses an 'analysis.setAnalysisRoots' "command" to let the analysis server know that the user requested, for example, `dart analyze foo` or `dart analyze foo/bar.dart`. This was not conveyed to analyzer plugins, so analyzer plugins will always analyze the entire context collection. (For some reason, only files in the "analysis roots" were reported in stdout; maybe DAS or dartdev does its own filtering on diagnostics.) This change forwards the `setAnalysisRoots` request to DAS plugins using a new protocol message that mirrors the one for the server. We should not change the behavior of `analysis.setContextRoots` for legacy plugins, so we keep sending that request as per usual. Then we send `analysis.setAnalysisRoots` at the same time. If we receive an `analysis.setAnalysisRoots` message, dispose and delete references to the existing context collection, and instantiate a new one, with the specified `included` and `excluded` paths. Change-Id: I53627da1c30351a22b5e5410a557bf486620a7aa Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/505041 Commit-Queue: Samuel Rawlins <srawlins@google.com> Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>