From 2887426da0ec8b4f8fc97894a5a29026d5259293 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Wed, 17 Feb 2021 15:00:44 +0100 Subject: Revert "Replace usage of ast::NameOrNameRef with ast::NameLike" This reverts commit e1dbf43cf85f84c3a7e40f9731fc1f7ac96f8979. --- crates/syntax/src/ast/node_ext.rs | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) (limited to 'crates/syntax/src/ast') diff --git a/crates/syntax/src/ast/node_ext.rs b/crates/syntax/src/ast/node_ext.rs index c1f8101b2..2fa7b8c1e 100644 --- a/crates/syntax/src/ast/node_ext.rs +++ b/crates/syntax/src/ast/node_ext.rs @@ -297,7 +297,7 @@ impl ast::RecordExprField { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone)] pub enum NameLike { NameRef(ast::NameRef), Name(ast::Name), @@ -335,16 +335,6 @@ impl ast::AstNode for NameLike { } } -impl fmt::Display for NameLike { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - match self { - NameLike::Name(it) => fmt::Display::fmt(it, f), - NameLike::NameRef(it) => fmt::Display::fmt(it, f), - NameLike::Lifetime(it) => fmt::Display::fmt(it, f), - } - } -} - mod __ { use super::{ ast::{Lifetime, Name, NameRef}, @@ -353,11 +343,26 @@ mod __ { stdx::impl_from!(NameRef, Name, Lifetime for NameLike); } +#[derive(Debug, Clone, PartialEq)] +pub enum NameOrNameRef { + Name(ast::Name), + NameRef(ast::NameRef), +} + +impl fmt::Display for NameOrNameRef { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + NameOrNameRef::Name(it) => fmt::Display::fmt(it, f), + NameOrNameRef::NameRef(it) => fmt::Display::fmt(it, f), + } + } +} + impl ast::RecordPatField { pub fn for_field_name_ref(field_name: &ast::NameRef) -> Option { let candidate = field_name.syntax().parent().and_then(ast::RecordPatField::cast)?; match candidate.field_name()? { - NameLike::NameRef(name_ref) if name_ref == *field_name => Some(candidate), + NameOrNameRef::NameRef(name_ref) if name_ref == *field_name => Some(candidate), _ => None, } } @@ -366,19 +371,19 @@ impl ast::RecordPatField { let candidate = field_name.syntax().ancestors().nth(2).and_then(ast::RecordPatField::cast)?; match candidate.field_name()? { - NameLike::Name(name) if name == *field_name => Some(candidate), + NameOrNameRef::Name(name) if name == *field_name => Some(candidate), _ => None, } } /// Deals with field init shorthand - pub fn field_name(&self) -> Option { + pub fn field_name(&self) -> Option { if let Some(name_ref) = self.name_ref() { - return Some(NameLike::NameRef(name_ref)); + return Some(NameOrNameRef::NameRef(name_ref)); } if let Some(ast::Pat::IdentPat(pat)) = self.pat() { let name = pat.name()?; - return Some(NameLike::Name(name)); + return Some(NameOrNameRef::Name(name)); } None } -- cgit v1.2.3