From 698f8c2f01ea549d77d7dc3338a12e04c11057b9 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 17 Apr 2024 14:02:58 +0200 Subject: Adding upstream version 1.64.0+dfsg1. Signed-off-by: Daniel Baumann --- compiler/rustc_errors/src/registry.rs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 compiler/rustc_errors/src/registry.rs (limited to 'compiler/rustc_errors/src/registry.rs') diff --git a/compiler/rustc_errors/src/registry.rs b/compiler/rustc_errors/src/registry.rs new file mode 100644 index 000000000..da764d993 --- /dev/null +++ b/compiler/rustc_errors/src/registry.rs @@ -0,0 +1,25 @@ +use rustc_data_structures::fx::FxHashMap; + +#[derive(Debug)] +pub struct InvalidErrorCode; + +#[derive(Clone)] +pub struct Registry { + long_descriptions: FxHashMap<&'static str, Option<&'static str>>, +} + +impl Registry { + pub fn new(long_descriptions: &[(&'static str, Option<&'static str>)]) -> Registry { + Registry { long_descriptions: long_descriptions.iter().copied().collect() } + } + + /// Returns `InvalidErrorCode` if the code requested does not exist in the + /// registry. Otherwise, returns an `Option` where `None` means the error + /// code is valid but has no extended information. + pub fn try_find_description( + &self, + code: &str, + ) -> Result, InvalidErrorCode> { + self.long_descriptions.get(code).copied().ok_or(InvalidErrorCode) + } +} -- cgit v1.2.3