blob: 8a3e969b6b36ef0b4c1f6783e4b928d7072cc4ac [file] [log] [blame]
// Copyright (c) 2024, 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.
import 'package:front_end/src/api_unstable/ddc.dart'
show InitializedCompilerState;
/// The result of a single `dartdevc` compilation.
///
/// Typically used for exiting the process with [exitCode] or checking the
/// [success] of the compilation.
///
/// For batch/worker compilations, the [compilerState] provides an opportunity
/// to reuse state from the previous run, if the options/input summaries are
/// equivalent. Otherwise it will be discarded.
class CompilerResult {
/// Optionally provides the front_end state from the previous compilation,
/// which can be passed to [compile] to potentially speed up the next
/// compilation.
final InitializedCompilerState? kernelState;
/// The process exit code of the compiler.
final int exitCode;
CompilerResult(this.exitCode, {this.kernelState});
/// Gets the kernel compiler state, if any.
Object? get compilerState => kernelState;
/// Whether the program compiled without any fatal errors (equivalent to
/// [exitCode] == 0).
bool get success => exitCode == 0;
/// Whether the compiler crashed (i.e. threw an unhandled exception,
/// typically indicating an internal error in DDC itself or its front end).
bool get crashed => exitCode == 70;
}