From 1b6a04ca5504955c571d1c97504fb45ea0befee4 Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Mon, 8 Jan 2024 01:21:28 +0400 Subject: Initial vendor packages Signed-off-by: Valentin Popov --- vendor/miette-derive/src/diagnostic_arg.rs | 42 ++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 vendor/miette-derive/src/diagnostic_arg.rs (limited to 'vendor/miette-derive/src/diagnostic_arg.rs') diff --git a/vendor/miette-derive/src/diagnostic_arg.rs b/vendor/miette-derive/src/diagnostic_arg.rs new file mode 100644 index 0000000..bade6f0 --- /dev/null +++ b/vendor/miette-derive/src/diagnostic_arg.rs @@ -0,0 +1,42 @@ +use syn::parse::{Parse, ParseStream}; + +use crate::code::Code; +use crate::forward::Forward; +use crate::help::Help; +use crate::severity::Severity; +use crate::url::Url; + +pub enum DiagnosticArg { + Transparent, + Code(Code), + Severity(Severity), + Help(Help), + Url(Url), + Forward(Forward), +} + +impl Parse for DiagnosticArg { + fn parse(input: ParseStream) -> syn::Result { + let ident = input.fork().parse::()?; + if ident == "transparent" { + // consume the token + let _: syn::Ident = input.parse()?; + Ok(DiagnosticArg::Transparent) + } else if ident == "forward" { + Ok(DiagnosticArg::Forward(input.parse()?)) + } else if ident == "code" { + Ok(DiagnosticArg::Code(input.parse()?)) + } else if ident == "severity" { + Ok(DiagnosticArg::Severity(input.parse()?)) + } else if ident == "help" { + Ok(DiagnosticArg::Help(input.parse()?)) + } else if ident == "url" { + Ok(DiagnosticArg::Url(input.parse()?)) + } else { + Err(syn::Error::new( + ident.span(), + "Unrecognized diagnostic option", + )) + } + } +} -- cgit v1.2.3