diff options
| author | Mark Rousskov <mark.simulacrum@gmail.com> | 2019-11-14 14:01:03 -0500 |
|---|---|---|
| committer | Mark Rousskov <mark.simulacrum@gmail.com> | 2019-11-15 08:21:23 -0500 |
| commit | e1a87ca17a60aadae36b6785b7204610e02ee994 (patch) | |
| tree | 6331018f4507c9ba07abb79251aeeb40e6171f56 /src/librustc_errors | |
| parent | 82cf3a4486bc882207a09bf0d9e2dea4632781aa (diff) | |
| download | rust-e1a87ca17a60aadae36b6785b7204610e02ee994.tar.gz rust-e1a87ca17a60aadae36b6785b7204610e02ee994.zip | |
Move FatalError to syntax_pos
This is a bit unfortunate, but code needs to be able to fatally error early on (in particular, syntax_pos after we move SourceMap there). It's also a tiny bit of code, which means it's ultimately not that bad.
Diffstat (limited to 'src/librustc_errors')
| -rw-r--r-- | src/librustc_errors/lib.rs | 31 |
1 files changed, 1 insertions, 30 deletions
diff --git a/src/librustc_errors/lib.rs b/src/librustc_errors/lib.rs index 8ee28875c62..ee35d23af34 100644 --- a/src/librustc_errors/lib.rs +++ b/src/librustc_errors/lib.rs @@ -259,36 +259,7 @@ impl CodeSuggestion { } } -/// Used as a return value to signify a fatal error occurred. (It is also -/// used as the argument to panic at the moment, but that will eventually -/// not be true.) -#[derive(Copy, Clone, Debug)] -#[must_use] -pub struct FatalError; - -pub struct FatalErrorMarker; - -// Don't implement Send on FatalError. This makes it impossible to panic!(FatalError). -// We don't want to invoke the panic handler and print a backtrace for fatal errors. -impl !Send for FatalError {} - -impl FatalError { - pub fn raise(self) -> ! { - panic::resume_unwind(Box::new(FatalErrorMarker)) - } -} - -impl fmt::Display for FatalError { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, "parser fatal error") - } -} - -impl error::Error for FatalError { - fn description(&self) -> &str { - "The parser has encountered a fatal error" - } -} +pub use syntax_pos::fatal_error::{FatalError, FatalErrorMarker}; /// Signifies that the compiler died with an explicit call to `.bug` /// or `.span_bug` rather than a failed assertion, etc. |
