| // Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file | |
| // for details. All rights reserved. Use of this source code is governed by a | |
| // BSD-style license that can be found in the LICENSE file. | |
| /// All the Dart compilers supported by the test runner. | |
| enum Compiler { | |
| /// The production Dart to Javascript compiler (whole world, optimizing). | |
| dart2js('Dart2Js', 'dart2js'), | |
| /// Experimental Dart to Wasm compiler. | |
| dart2wasm('Dart2Wasm', 'dart2wasm'), | |
| /// Compiles dart code to a native executable. This compiler does not | |
| /// support code assets from build and link hooks. | |
| exe('Exe', 'exe'), | |
| /// Compiles dart code to a native CLI bundle. This compiler supports | |
| /// code assets from build and link hooks. | |
| cli('Cli', 'cli'), | |
| /// The standard compiler for vm tests, compiles tests to kernel before | |
| /// running them on the VM. | |
| kernel('Kernel', 'kernel'), | |
| /// Runs tests directly from source, with no precompilation. | |
| source('Source', 'source'); | |
| /// The compilers that are supported by the test runner by default. | |
| static const List<Compiler> builtIn = [ | |
| Compiler.dart2js, | |
| Compiler.dart2wasm, | |
| Compiler.exe, | |
| Compiler.cli, | |
| Compiler.kernel, | |
| Compiler.source, | |
| ]; | |
| /// The human-friendly name of the compiler. | |
| final String name; | |
| /// The identifier used to look up the compiler. | |
| final String identifier; | |
| const Compiler(this.name, this.identifier); | |
| /// Converts a JSON-safe representation generated by [serialize] back into a | |
| /// [Compiler]. | |
| /// | |
| /// Note that custom [Compiler] implementations are not supported. | |
| factory Compiler.deserialize(Object serialized) => builtIn.firstWhere( | |
| (compiler) => compiler.identifier == serialized as String, | |
| ); | |
| /// Converts [this] into a JSON-safe object that can be converted back to a | |
| /// [Compiler] using [Compiler.deserialize]. | |
| Object serialize() => identifier; | |
| @override | |
| String toString() => name; | |
| } | |
| extension CompileTarget on Compiler { | |
| bool get isJS => this == Compiler.dart2js; | |
| bool get isWasm => this == Compiler.dart2wasm; | |
| } |