8d62a1f104
This change adds a build target (see utils/analysis_server/BUILD.gn) called 'analysis_server_aot'. This new target is _not_ included in the Dart SDK (the create_sdk target). It's "opt-in" "for development." The name of the new output file matches that of other snapshots (see the dartdevc snapshots). Then we do special work in the plugin manager if "we are AOT." An analysis server running as AOT cannot spawn Isolates from a dart source files; we must first compile a dart source file to AOT as well, then we can spawn an Isolate to that AOT file. _Then_ when we run pub, we can no longer rely on using `Platform.executable`. `dartaotruntime pub get` is not a thing. We must instead find the `dart` tool on disk. To do that, we copy some complex discovery code from dartdev. Work towards https://github.com/dart-lang/sdk/issues/53402 Work towards https://github.com/dart-lang/sdk/issues/53576 Work towards https://github.com/dart-lang/sdk/issues/50498 Manually tested: * [+] analysis_server JIT snapshot works in IDE. * [+] analysis_server JIT snapshot works in IDE, with a legacy plugin (custom_lint). * [+] analysis_server JIT snapshot works at commandline. * [+] analysis_server AOT snapshot works in IDE. * [x] analysis_server AOT snapshot works in IDE, with a legacy plugin (custom_lint) - BROKEN. Need similar work that is done for new plugins. * [x] analysis_server AOT snapshot works at commandline - BROKEN. I think a fair bit of refactoring is required in dartdev lib/src/analysis_server.dart to use `VmInteropHandler.run` or similar. Change-Id: I53173c716fa2a763331ef524a96304f62165810e Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/417942 Commit-Queue: Samuel Rawlins <srawlins@google.com> Reviewed-by: Siva Annamalai <asiva@google.com>