blob: 397d9b650aec080f6c25eaaaad3a16ef24a20f1b [file] [log] [blame]
// Copyright (c) 2019, 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.
part of dart._internal;
/// Error thrown when a `late` variable is accessed inappropriately.
class LateError extends Error {
final String? _message;
LateError([this._message]);
// The constructor names have been deliberately shortened to reduce the size
// of unminified code as used by DDC.
/// Variable written while evaluating its initializer expression.
@pragma("vm:entry-point")
LateError.fieldADI(String fieldName)
: _message =
"Field '$fieldName' has been assigned during initialization.";
/// Local variable written while evaluating its initializer expression.
LateError.localADI(String localName)
: _message =
"Local '$localName' has been assigned during initialization.";
/// Variable read before it was initialized.
@pragma("vm:entry-point")
LateError.fieldNI(String fieldName)
: _message = "Field '${fieldName}' has not been initialized.";
/// Local variable read before it was initialized.
LateError.localNI(String localName)
: _message = "Local '${localName}' has not been initialized.";
/// Final variable written more than once.
LateError.fieldAI(String fieldName)
: _message = "Field '${fieldName}' has already been initialized.";
/// Final local variable written more than once.
LateError.localAI(String localName)
: _message = "Local '${localName}' has already been initialized.";
String toString() {
var message = _message;
return (message != null)
? "LateInitializationError: $message"
: "LateInitializationError";
}
}
/// Error thrown when unsoundness causes flow analysis to be incorrect.
///
/// A switch on an enum type is considered exhaustive if it covers all
/// the enum values. If run in unsound null-safety mode, the value
/// can also be `null`. If so, a `ReachabilityError` is thrown rather
/// than allowing the switch to be inexhaustive.
///
/// This is not a public facing error. It should not happen in sound
/// programs.
class ReachabilityError extends Error {
final String? _message;
ReachabilityError([this._message]);
String toString() {
var message = _message;
return (message != null)
? "ReachabilityError: $message"
: "ReachabilityError";
}
}