From 36628678d91b61d794b71d7d257e0b97a51e8296 Mon Sep 17 00:00:00 2001 From: Anthony Caccia Date: Mon, 3 Oct 2022 13:59:19 +0200 Subject: [PATCH] Create a method "into_label" in Ident to make conversion more explicit than using "into" --- lsp/nls/src/requests/completion.rs | 2 +- src/deserialize.rs | 6 +++--- src/eval/operation.rs | 2 +- src/identifier.rs | 6 +++++- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/lsp/nls/src/requests/completion.rs b/lsp/nls/src/requests/completion.rs index 72578c50..51c83b18 100644 --- a/lsp/nls/src/requests/completion.rs +++ b/lsp/nls/src/requests/completion.rs @@ -50,7 +50,7 @@ pub fn handle_completion( _ => None, }) .map(|(ident, _)| CompletionItem { - label: ident.into(), + label: ident.into_label(), ..Default::default() }) .collect(); diff --git a/src/deserialize.rs b/src/deserialize.rs index 28e6d8a9..e1f9d7b7 100644 --- a/src/deserialize.rs +++ b/src/deserialize.rs @@ -70,7 +70,7 @@ impl<'de> serde::Deserializer<'de> for RichTerm { Term::Num(v) => visitor.visit_f64(v), Term::Str(v) => visitor.visit_string(v), Term::Enum(v) => visitor.visit_enum(EnumDeserializer { - variant: v.into(), + variant: v.into_label(), rich_term: None, }), Term::Record(v, _) => visit_record(v, visitor), @@ -117,7 +117,7 @@ impl<'de> serde::Deserializer<'de> for RichTerm { V: Visitor<'de>, { let (variant, rich_term) = match unwrap_term(self)? { - Term::Enum(ident) => (ident.into(), None), + Term::Enum(ident) => (ident.into_label(), None), Term::Record(v, _) => { let mut iter = v.into_iter(); let (variant, value) = match iter.next() { @@ -135,7 +135,7 @@ impl<'de> serde::Deserializer<'de> for RichTerm { occurred: "Record with multiple keys".to_string(), }); } - (variant.into(), Some(value)) + (variant.into_label(), Some(value)) } other => { return Err(RustDeserializationError::InvalidType { diff --git a/src/eval/operation.rs b/src/eval/operation.rs index f75b94dd..ea62b000 100644 --- a/src/eval/operation.rs +++ b/src/eval/operation.rs @@ -446,7 +446,7 @@ fn process_unary_operation( }) } None => Err(EvalError::FieldMissing( - id.into(), + id.into_label(), String::from("(.)"), RichTerm { term: t, pos }, pos_op, diff --git a/src/identifier.rs b/src/identifier.rs index a822343d..8e654334 100644 --- a/src/identifier.rs +++ b/src/identifier.rs @@ -33,6 +33,10 @@ impl Ident { pub fn label(&self) -> &str { INTERNER.lookup(self.symbol) } + + pub fn into_label(self) -> String { + self.label().to_owned() + } } /// Special character used for generating fresh identifiers. It must be syntactically impossible to @@ -82,7 +86,7 @@ where impl Into for Ident { fn into(self) -> String { - self.as_ref().to_owned() + self.into_label() } }