Unnamed repository; edit this file 'description' to name the repository.
Remove the obsolete TokenText wrapper
25 files changed, 63 insertions, 186 deletions
diff --git a/crates/hir-expand/src/builtin/derive_macro.rs b/crates/hir-expand/src/builtin/derive_macro.rs index 5e85a710e0..ccd2d6dca2 100644 --- a/crates/hir-expand/src/builtin/derive_macro.rs +++ b/crates/hir-expand/src/builtin/derive_macro.rs @@ -412,7 +412,7 @@ fn name_to_token( })?; let span = token_map.span_at(name.syntax().text_range().start()); - let name_token = tt::Ident::new(name.text().as_ref(), span); + let name_token = tt::Ident::new(name.text(), span); Ok(name_token) } diff --git a/crates/ide-assists/src/handlers/apply_demorgan.rs b/crates/ide-assists/src/handlers/apply_demorgan.rs index 10262445a2..e2c1048bdb 100644 --- a/crates/ide-assists/src/handlers/apply_demorgan.rs +++ b/crates/ide-assists/src/handlers/apply_demorgan.rs @@ -206,7 +206,7 @@ pub(crate) fn apply_demorgan_iterator( let closure_body = closure_expr.body()?; let op_range = method_call.syntax().text_range(); - let label = format!("Apply De Morgan's law to `Iterator::{}`", name.text().as_str()); + let label = format!("Apply De Morgan's law to `Iterator::{}`", name.text()); acc.add_group( &GroupLabel("Apply De Morgan's law".to_owned()), AssistId::refactor_rewrite("apply_demorgan_iterator"), @@ -216,7 +216,7 @@ pub(crate) fn apply_demorgan_iterator( let editor = builder.make_editor(method_call.syntax()); let make = editor.make(); // replace the method name - let new_name = match name.text().as_str() { + let new_name = match name.text() { "all" => make.name_ref("any"), "any" => make.name_ref("all"), "is_some_and" => make.name_ref("is_none_or"), diff --git a/crates/ide-assists/src/handlers/convert_into_to_from.rs b/crates/ide-assists/src/handlers/convert_into_to_from.rs index a01a66e7b1..c8de14bed4 100644 --- a/crates/ide-assists/src/handlers/convert_into_to_from.rs +++ b/crates/ide-assists/src/handlers/convert_into_to_from.rs @@ -109,7 +109,7 @@ pub(crate) fn convert_into_to_from(acc: &mut Assists, ctx: &AssistContext<'_, '_ editor.replace(into_fn_name.syntax(), make.name("from").syntax()); for s in selfs { - match s.text().as_ref() { + match s.text() { "self" => editor.replace(s.syntax(), make.name_ref("val").syntax()), "Self" => { if let Some(path_segment) = diff --git a/crates/ide-assists/src/handlers/extract_struct_from_enum_variant.rs b/crates/ide-assists/src/handlers/extract_struct_from_enum_variant.rs index 5e6e74bc94..89c5470c16 100644 --- a/crates/ide-assists/src/handlers/extract_struct_from_enum_variant.rs +++ b/crates/ide-assists/src/handlers/extract_struct_from_enum_variant.rs @@ -241,7 +241,7 @@ fn tag_generics_in_variant(ty: &ast::Type, generics: &mut [(ast::GenericParam, b if matches!(token.kind(), T![lifetime_ident]) => { if let Some(lt) = lt.lifetime() - && lt.text().as_str() == token.text() + && lt.text() == token.text() { *tag = true; tagged_one = true; @@ -250,18 +250,15 @@ fn tag_generics_in_variant(ty: &ast::Type, generics: &mut [(ast::GenericParam, b } param if matches!(token.kind(), T![ident]) => { if match param { - ast::GenericParam::ConstParam(konst) => konst - .name() - .map(|name| name.text().as_str() == token.text()) - .unwrap_or_default(), - ast::GenericParam::TypeParam(ty) => ty - .name() - .map(|name| name.text().as_str() == token.text()) - .unwrap_or_default(), - ast::GenericParam::LifetimeParam(lt) => lt - .lifetime() - .map(|lt| lt.text().as_str() == token.text()) - .unwrap_or_default(), + ast::GenericParam::ConstParam(konst) => { + konst.name().map(|name| name.text() == token.text()).unwrap_or_default() + } + ast::GenericParam::TypeParam(ty) => { + ty.name().map(|name| name.text() == token.text()).unwrap_or_default() + } + ast::GenericParam::LifetimeParam(lt) => { + lt.lifetime().map(|lt| lt.text() == token.text()).unwrap_or_default() + } } { *tag = true; tagged_one = true; diff --git a/crates/ide-assists/src/handlers/generate_function.rs b/crates/ide-assists/src/handlers/generate_function.rs index 3c3fde80f9..3bec992252 100644 --- a/crates/ide-assists/src/handlers/generate_function.rs +++ b/crates/ide-assists/src/handlers/generate_function.rs @@ -67,7 +67,7 @@ fn gen_fn(acc: &mut Assists, ctx: &AssistContext<'_, '_>) -> Option<()> { return None; } - let fn_name = &*name_ref.text(); + let fn_name = name_ref.text(); let TargetInfo { target_module, adt_info, target, file } = fn_target_info(ctx, path, &call, fn_name)?; @@ -159,7 +159,7 @@ fn gen_method(acc: &mut Assists, ctx: &AssistContext<'_, '_>) -> Option<()> { let (impl_, file) = if let Some(impl_) = cursor_impl { (Some(impl_), ctx.vfs_file_id()) } else { - get_adt_source(ctx, &adt, fn_name.text().as_str())? + get_adt_source(ctx, &adt, fn_name.text())? }; let target = get_method_target(ctx, &impl_, &adt)?; diff --git a/crates/ide-assists/src/handlers/generate_single_field_struct_from.rs b/crates/ide-assists/src/handlers/generate_single_field_struct_from.rs index d5629e2e7e..23ce726703 100644 --- a/crates/ide-assists/src/handlers/generate_single_field_struct_from.rs +++ b/crates/ide-assists/src/handlers/generate_single_field_struct_from.rs @@ -4,14 +4,11 @@ use ide_db::{ RootDatabase, famous_defs::FamousDefs, helpers::mod_path_to_ast_with_factory, imports::import_assets::item_for_path_search, }; -use syntax::syntax_editor::{Position, SyntaxEditor}; -use syntax::{ - TokenText, - ast::{ - self, AstNode, HasAttrs, HasGenericParams, HasName, edit::AstNodeEdit, - syntax_factory::SyntaxFactory, - }, +use syntax::ast::{ + self, AstNode, HasAttrs, HasGenericParams, HasName, edit::AstNodeEdit, + syntax_factory::SyntaxFactory, }; +use syntax::syntax_editor::{Position, SyntaxEditor}; use crate::{ AssistId, @@ -71,8 +68,7 @@ pub(crate) fn generate_single_field_struct_from( return None; } - let main_field_name = - names.as_ref().map_or(TokenText::borrowed("value"), |names| names[main_field_i].text()); + let main_field_name = names.as_ref().map_or("value", |names| names[main_field_i].text()); let main_field_ty = types[main_field_i].clone(); acc.add( @@ -161,7 +157,7 @@ pub(crate) fn generate_single_field_struct_from( fn make_adt_constructor( names: Option<&[ast::Name]>, constructors: Vec<Option<ast::Expr>>, - main_field_name: &TokenText<'_>, + main_field_name: &str, make: &SyntaxFactory, ) -> ast::Expr { if let Some(names) = names { diff --git a/crates/ide-assists/src/handlers/reorder_impl_items.rs b/crates/ide-assists/src/handlers/reorder_impl_items.rs index 658947abe1..ed5a372e54 100644 --- a/crates/ide-assists/src/handlers/reorder_impl_items.rs +++ b/crates/ide-assists/src/handlers/reorder_impl_items.rs @@ -82,7 +82,7 @@ pub(crate) fn reorder_impl_items(acc: &mut Assists, ctx: &AssistContext<'_, '_>) ast::AssocItem::MacroCall(_) => None, }; - name.and_then(|n| ranks.get(n.text().as_str().trim_start_matches("r#")).copied()) + name.and_then(|n| ranks.get(n.text().trim_start_matches("r#")).copied()) .unwrap_or(usize::MAX) }) .collect(); diff --git a/crates/ide-assists/src/utils.rs b/crates/ide-assists/src/utils.rs index 670a030255..ad46c61935 100644 --- a/crates/ide-assists/src/utils.rs +++ b/crates/ide-assists/src/utils.rs @@ -344,7 +344,7 @@ fn invert_special_case(make: &SyntaxFactory, expr: &ast::Expr) -> Option<ast::Ex let method = mce.name_ref()?; let arg_list = mce.arg_list()?; - let method = match method.text().as_str() { + let method = match method.text() { "is_some" => "is_none", "is_none" => "is_some", "is_ok" => "is_err", diff --git a/crates/ide-assists/src/utils/gen_trait_fn_body.rs b/crates/ide-assists/src/utils/gen_trait_fn_body.rs index c0ddcb950c..277b5bd8df 100644 --- a/crates/ide-assists/src/utils/gen_trait_fn_body.rs +++ b/crates/ide-assists/src/utils/gen_trait_fn_body.rs @@ -21,7 +21,7 @@ pub(crate) fn gen_trait_fn_body( trait_ref: Option<TraitRef<'_>>, ) -> Option<ast::BlockExpr> { let _ = func.body()?; - match trait_path.segment()?.name_ref()?.text().as_str() { + match trait_path.segment()?.name_ref()?.text() { "Clone" => { stdx::always!(func.name().is_some_and(|name| name.text() == "clone")); gen_clone_impl(make, adt) diff --git a/crates/ide-completion/src/completions/attribute.rs b/crates/ide-completion/src/completions/attribute.rs index 109ebce01c..c2d7cb98cf 100644 --- a/crates/ide-completion/src/completions/attribute.rs +++ b/crates/ide-completion/src/completions/attribute.rs @@ -40,7 +40,6 @@ pub(crate) fn complete_known_attribute_input( let path = attribute.path()?; let segments = path.segments().map(|s| s.name_ref()).collect::<Option<Vec<_>>>()?; let segments = segments.iter().map(|n| n.text()).collect::<Vec<_>>(); - let segments = segments.iter().map(|t| t.as_str()).collect::<Vec<_>>(); let tt = attribute.token_tree()?; match segments.as_slice() { diff --git a/crates/ide-completion/src/completions/attribute/repr.rs b/crates/ide-completion/src/completions/attribute/repr.rs index 63cddb365e..73ba847e7e 100644 --- a/crates/ide-completion/src/completions/attribute/repr.rs +++ b/crates/ide-completion/src/completions/attribute/repr.rs @@ -23,7 +23,7 @@ pub(super) fn complete_repr( }) .any(|it| { let text = it.text(); - lookup.unwrap_or(label) == text || collides.contains(&text.as_str()) + lookup.unwrap_or(label) == text || collides.contains(&text) }); if repr_already_annotated { continue; diff --git a/crates/ide-completion/src/completions/postfix.rs b/crates/ide-completion/src/completions/postfix.rs index 5a3a3ac39c..34b53e5e5b 100644 --- a/crates/ide-completion/src/completions/postfix.rs +++ b/crates/ide-completion/src/completions/postfix.rs @@ -365,7 +365,7 @@ fn suggest_receiver_name( match receiver { ast::Expr::PathExpr(path) => { if let Some(name) = path.path().and_then(|it| it.as_single_name_ref()) { - return placeholder(name.text().as_str()); + return placeholder(name.text()); } } ast::Expr::RefExpr(it) => { diff --git a/crates/ide-db/src/imports/insert_use.rs b/crates/ide-db/src/imports/insert_use.rs index 27e3ed6bdb..0235389763 100644 --- a/crates/ide-db/src/imports/insert_use.rs +++ b/crates/ide-db/src/imports/insert_use.rs @@ -314,7 +314,7 @@ impl ImportGroup { PathSegmentKind::SelfKw => ImportGroup::ThisModule, PathSegmentKind::SuperKw => ImportGroup::SuperModule, PathSegmentKind::CrateKw => ImportGroup::ThisCrate, - PathSegmentKind::Name(name) => match name.text().as_str() { + PathSegmentKind::Name(name) => match name.text() { "std" => ImportGroup::Std, "core" => ImportGroup::Std, _ => ImportGroup::ExternCrate, diff --git a/crates/ide-db/src/imports/merge_imports.rs b/crates/ide-db/src/imports/merge_imports.rs index 59099056f5..f9251458fd 100644 --- a/crates/ide-db/src/imports/merge_imports.rs +++ b/crates/ide-db/src/imports/merge_imports.rs @@ -582,8 +582,8 @@ fn path_segment_cmp(a: &ast::PathSegment, b: &ast::PathSegment) -> Ordering { (Some(_), None) => Ordering::Greater, (None, Some(_)) => Ordering::Less, (Some(a_name), Some(b_name)) => { - let a_text = a_name.as_str().trim_start_matches("r#"); - let b_text = b_name.as_str().trim_start_matches("r#"); + let a_text = a_name.trim_start_matches("r#"); + let b_text = b_name.trim_start_matches("r#"); version_sort::version_sort(a_text, b_text) } } @@ -614,15 +614,13 @@ fn use_tree_cmp_by_tree_list_glob_or_alias( .name() .as_ref() .map(ast::Name::text) - .as_ref() - .map_or("_", |a_name| a_name.as_str().trim_start_matches("r#")) + .map_or("_", |a_name| a_name.trim_start_matches("r#")) .cmp( b_rename .name() .as_ref() .map(ast::Name::text) - .as_ref() - .map_or("_", |b_name| b_name.as_str().trim_start_matches("r#")), + .map_or("_", |b_name| b_name.trim_start_matches("r#")), ), }, }; diff --git a/crates/ide-db/src/path_transform.rs b/crates/ide-db/src/path_transform.rs index 101046cf54..55d602ce2e 100644 --- a/crates/ide-db/src/path_transform.rs +++ b/crates/ide-db/src/path_transform.rs @@ -651,7 +651,7 @@ fn find_trait_for_assoc_item( }); for name in names { - if assoc_item_name.as_str() == name.as_str() { + if assoc_item_name == name.as_str() { // It is fine to return the first match because in case of // multiple possibilities, the exact trait must be disambiguated // in the definition of trait being implemented, so this search diff --git a/crates/ide-db/src/ra_fixture.rs b/crates/ide-db/src/ra_fixture.rs index c8607a8099..09a270c143 100644 --- a/crates/ide-db/src/ra_fixture.rs +++ b/crates/ide-db/src/ra_fixture.rs @@ -102,8 +102,7 @@ impl RaFixtureAnalysis { else { return false; }; - segment1.text_non_mutable() == "rust_analyzer" - && segment2.text_non_mutable() == "rust_fixture" + segment1.text() == "rust_analyzer" && segment2.text() == "rust_fixture" }) }); if !has_rust_fixture_attr { diff --git a/crates/ide-db/src/rename.rs b/crates/ide-db/src/rename.rs index b89c2fdf4a..775b85c479 100644 --- a/crates/ide-db/src/rename.rs +++ b/crates/ide-db/src/rename.rs @@ -734,7 +734,7 @@ fn source_edit_from_def<'db>( // special cases required for renaming fields/locals in Record patterns if let Some(pat_field) = pat.syntax().parent().and_then(ast::RecordPatField::cast) { if let Some(name_ref) = pat_field.name_ref() { - if new_name.as_str() == name_ref.text().as_str().trim_start_matches("r#") + if new_name.as_str() == name_ref.text().trim_start_matches("r#") && pat.at_token().is_none() { // Foo { field: ref mut local } -> Foo { ref mut field } diff --git a/crates/ide-db/src/search.rs b/crates/ide-db/src/search.rs index b688cb188d..6a492a5479 100644 --- a/crates/ide-db/src/search.rs +++ b/crates/ide-db/src/search.rs @@ -119,13 +119,13 @@ impl FileReferenceNode { _ => None, } } - pub fn text(&self) -> syntax::TokenText<'_> { + pub fn text(&self) -> &str { match self { FileReferenceNode::NameRef(name_ref) => name_ref.text(), FileReferenceNode::Name(name) => name.text(), FileReferenceNode::Lifetime(lifetime) => lifetime.text(), FileReferenceNode::FormatStringEntry(it, range) => { - syntax::TokenText::borrowed(&it.text()[*range - it.syntax().text_range().start()]) + &it.text()[*range - it.syntax().text_range().start()] } } } @@ -751,7 +751,7 @@ impl<'a, 'db> FindUsages<'a, 'db> { insert_type_alias( sema.db, &mut to_process, - name.text().as_str(), + name.text(), def.into(), ); } else { @@ -814,7 +814,7 @@ impl<'a, 'db> FindUsages<'a, 'db> { insert_type_alias( sema.db, &mut to_process, - name.text().as_str(), + name.text(), def.into(), ); } else { diff --git a/crates/ide-ssr/src/resolving.rs b/crates/ide-ssr/src/resolving.rs index 3dbba0ff2d..9d6079202a 100644 --- a/crates/ide-ssr/src/resolving.rs +++ b/crates/ide-ssr/src/resolving.rs @@ -155,7 +155,7 @@ impl<'db> Resolver<'_, 'db> { fn path_contains_placeholder(&self, path: &ast::Path) -> bool { if let Some(segment) = path.segment() && let Some(name_ref) = segment.name_ref() - && self.placeholders_by_stand_in.contains_key(name_ref.text().as_str()) + && self.placeholders_by_stand_in.contains_key(name_ref.text()) { return true; } diff --git a/crates/ide/src/inlay_hints/lifetime.rs b/crates/ide/src/inlay_hints/lifetime.rs index 7a8a6eb84a..89a2d9fa97 100644 --- a/crates/ide/src/inlay_hints/lifetime.rs +++ b/crates/ide/src/inlay_hints/lifetime.rs @@ -204,7 +204,7 @@ fn hints_( mut is_trivial: bool, ) -> Option<()> { let is_elided = |lt: &Option<ast::Lifetime>| match lt { - Some(lt) => matches!(lt.text().as_str(), "'_"), + Some(lt) => matches!(lt.text(), "'_"), None => true, }; let self_param = self_param.and_then(|it| { @@ -298,12 +298,12 @@ fn hints_( potential_lt_refs.for_each(|(name, ..)| { let name = match name { Some(it) if config.param_names_for_lifetime_elision_hints => { - if let Some(c) = used_names.get_mut(it.text().as_str()) { + if let Some(c) = used_names.get_mut(it.text()) { *c += 1; - format_smolstr!("'{}{c}", it.text().as_str()) + format_smolstr!("'{}{c}", it.text()) } else { - used_names.insert(it.text().as_str().into(), 0); - format_smolstr!("'{}", it.text().as_str()) + used_names.insert(it.text().into(), 0); + format_smolstr!("'{}", it.text()) } } _ => gen_idx_name(), @@ -316,7 +316,7 @@ fn hints_( let output = match potential_lt_refs.as_slice() { [(_, _, lifetime, _), ..] if self_param.is_some() || potential_lt_refs.len() == 1 => { match lifetime { - Some(lt) => match lt.text().as_str() { + Some(lt) => match lt.text() { "'_" => allocated_lifetimes.first().cloned(), "'static" => None, name => Some(name.into()), diff --git a/crates/ide/src/inlay_hints/param_name.rs b/crates/ide/src/inlay_hints/param_name.rs index 5da8f2e162..71cc177552 100644 --- a/crates/ide/src/inlay_hints/param_name.rs +++ b/crates/ide/src/inlay_hints/param_name.rs @@ -294,7 +294,7 @@ pub(super) fn is_argument_similar_to_param_name( debug_assert!(!argument.is_empty()); debug_assert!(!param_name.is_empty()); let param_name = param_name.split('_'); - let argument = argument.iter().flat_map(|it| it.text_non_mutable().split('_')); + let argument = argument.iter().flat_map(|it| it.text().split('_')); let argument = argument.map(|it| it.strip_prefix("r#").unwrap_or(it)); let prefix_match = zip(argument.clone(), param_name.clone()) @@ -313,7 +313,7 @@ pub(super) fn get_segment_representation( let receiver = method_call_expr.receiver().and_then(|expr| get_segment_representation(&expr)); let name_ref = method_call_expr.name_ref()?; - if INSIGNIFICANT_METHOD_NAMES.contains(&name_ref.text().as_str()) { + if INSIGNIFICANT_METHOD_NAMES.contains(&name_ref.text()) { return receiver; } Some(Either::Left(match receiver { diff --git a/crates/span/src/ast_id.rs b/crates/span/src/ast_id.rs index 83a6748c01..369f383dbb 100644 --- a/crates/span/src/ast_id.rs +++ b/crates/span/src/ast_id.rs @@ -381,8 +381,8 @@ fn impl_ast_id( let self_ty_name = type_as_name(node.self_ty()); let trait_name = type_as_name(node.trait_()); let data = ImplFileAstId { - self_ty_name: self_ty_name.as_ref().map(|it| it.text_non_mutable()), - trait_name: trait_name.as_ref().map(|it| it.text_non_mutable()), + self_ty_name: self_ty_name.as_ref().map(|it| it.text()), + trait_name: trait_name.as_ref().map(|it| it.text()), }; Some(index_map.new_id(ErasedFileAstIdKind::Impl, data)) } else { @@ -473,7 +473,7 @@ macro_rules! register_has_name_ast_id { $( ast::$ident(node) => { let name = node.$name_method(); - let name = name.as_ref().map_or("", |it| it.text_non_mutable()); + let name = name.as_ref().map_or("", |it| it.text()); let result = ErasedHasNameFileAstId { name, }; @@ -519,7 +519,7 @@ macro_rules! register_assoc_item_ast_id { $( ast::$ident(node) => { let name = $name_callback(node); - let name = name.as_ref().map_or("", |it| it.text_non_mutable()); + let name = name.as_ref().map_or("", |it| it.text()); let properties = ErasedHasNameFileAstId { name, }; diff --git a/crates/syntax/src/ast/node_ext.rs b/crates/syntax/src/ast/node_ext.rs index 00aeb1dfeb..43bca6ed9e 100644 --- a/crates/syntax/src/ast/node_ext.rs +++ b/crates/syntax/src/ast/node_ext.rs @@ -11,7 +11,7 @@ use rowan::{GreenNodeData, GreenTokenData}; use smallvec::{SmallVec, smallvec}; use crate::{ - NodeOrToken, SmolStr, SyntaxElement, SyntaxElementChildren, SyntaxToken, T, TokenText, + NodeOrToken, SmolStr, SyntaxElement, SyntaxElementChildren, SyntaxToken, T, ast::{ self, AstNode, AstToken, HasAttrs, HasGenericArgs, HasGenericParams, HasName, HasTypeBounds, SyntaxNode, support, @@ -22,30 +22,22 @@ use crate::{ use super::{GenericParam, RangeItem, RangeOp}; impl ast::Lifetime { - pub fn text(&self) -> TokenText<'_> { + pub fn text(&self) -> &str { text_of_first_token(self.syntax()) } } impl ast::Name { - pub fn text(&self) -> TokenText<'_> { + pub fn text(&self) -> &str { text_of_first_token(self.syntax()) } - - pub fn text_non_mutable(&self) -> &str { - first_token(self.syntax().green()).text() - } } impl ast::NameRef { - pub fn text(&self) -> TokenText<'_> { + pub fn text(&self) -> &str { text_of_first_token(self.syntax()) } - pub fn text_non_mutable(&self) -> &str { - first_token(self.syntax().green()).text() - } - pub fn as_tuple_field(&self) -> Option<usize> { self.text().parse().ok() } @@ -55,12 +47,12 @@ impl ast::NameRef { } } -fn first_token(green_ref: &GreenNodeData) -> &GreenTokenData { - green_ref.children().next().and_then(NodeOrToken::into_token).unwrap() -} +fn text_of_first_token(node: &SyntaxNode) -> &str { + fn first_token(green_ref: &GreenNodeData) -> &GreenTokenData { + green_ref.children().next().and_then(NodeOrToken::into_token).unwrap() + } -fn text_of_first_token(node: &SyntaxNode) -> TokenText<'_> { - TokenText::borrowed(first_token(node.green()).text()) + first_token(node.green()).text() } fn into_comma(it: NodeOrToken<SyntaxNode, SyntaxToken>) -> Option<SyntaxToken> { @@ -604,7 +596,7 @@ impl NameLike { _ => None, } } - pub fn text(&self) -> TokenText<'_> { + pub fn text(&self) -> &str { match self { NameLike::NameRef(name_ref) => name_ref.text(), NameLike::Name(name) => name.text(), @@ -676,7 +668,7 @@ impl ast::AstNode for NameOrNameRef { } impl NameOrNameRef { - pub fn text(&self) -> TokenText<'_> { + pub fn text(&self) -> &str { match self { NameOrNameRef::Name(name) => name.text(), NameOrNameRef::NameRef(name_ref) => name_ref.text(), diff --git a/crates/syntax/src/lib.rs b/crates/syntax/src/lib.rs index 614678536a..204ebbd263 100644 --- a/crates/syntax/src/lib.rs +++ b/crates/syntax/src/lib.rs @@ -30,7 +30,6 @@ mod syntax_error; mod syntax_node; #[cfg(test)] mod tests; -mod token_text; mod validation; pub mod algo; @@ -54,7 +53,6 @@ pub use crate::{ PreorderWithTokens, RustLanguage, SyntaxElement, SyntaxElementChildren, SyntaxNode, SyntaxNodeChildren, SyntaxToken, SyntaxTreeBuilder, }, - token_text::TokenText, }; pub use parser::{Edition, SyntaxKind, T}; pub use rowan::{ diff --git a/crates/syntax/src/token_text.rs b/crates/syntax/src/token_text.rs deleted file mode 100644 index e69deb49ce..0000000000 --- a/crates/syntax/src/token_text.rs +++ /dev/null @@ -1,102 +0,0 @@ -//! Yet another version of owned string, backed by a syntax tree token. - -use std::{cmp::Ordering, fmt, ops}; - -use rowan::GreenToken; -use smol_str::SmolStr; - -pub struct TokenText<'a>(pub(crate) Repr<'a>); - -pub(crate) enum Repr<'a> { - Borrowed(&'a str), - Owned(GreenToken), -} - -impl<'a> TokenText<'a> { - pub fn borrowed(text: &'a str) -> Self { - TokenText(Repr::Borrowed(text)) - } - - pub(crate) fn owned(green: GreenToken) -> Self { - TokenText(Repr::Owned(green)) - } - - pub fn as_str(&self) -> &str { - match &self.0 { - &Repr::Borrowed(it) => it, - Repr::Owned(green) => green.text(), - } - } -} - -impl ops::Deref for TokenText<'_> { - type Target = str; - - fn deref(&self) -> &str { - self.as_str() - } -} -impl AsRef<str> for TokenText<'_> { - fn as_ref(&self) -> &str { - self.as_str() - } -} - -impl From<TokenText<'_>> for String { - fn from(token_text: TokenText<'_>) -> Self { - token_text.as_str().into() - } -} - -impl From<TokenText<'_>> for SmolStr { - fn from(token_text: TokenText<'_>) -> Self { - SmolStr::new(token_text.as_str()) - } -} - -impl PartialEq<&'_ str> for TokenText<'_> { - fn eq(&self, other: &&str) -> bool { - self.as_str() == *other - } -} -impl PartialEq<TokenText<'_>> for &'_ str { - fn eq(&self, other: &TokenText<'_>) -> bool { - other == self - } -} -impl PartialEq<String> for TokenText<'_> { - fn eq(&self, other: &String) -> bool { - self.as_str() == other.as_str() - } -} -impl PartialEq<TokenText<'_>> for String { - fn eq(&self, other: &TokenText<'_>) -> bool { - other == self - } -} -impl PartialEq for TokenText<'_> { - fn eq(&self, other: &TokenText<'_>) -> bool { - self.as_str() == other.as_str() - } -} -impl Eq for TokenText<'_> {} -impl Ord for TokenText<'_> { - fn cmp(&self, other: &Self) -> Ordering { - self.as_str().cmp(other.as_str()) - } -} -impl PartialOrd for TokenText<'_> { - fn partial_cmp(&self, other: &Self) -> Option<Ordering> { - Some(self.cmp(other)) - } -} -impl fmt::Display for TokenText<'_> { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - fmt::Display::fmt(self.as_str(), f) - } -} -impl fmt::Debug for TokenText<'_> { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - fmt::Debug::fmt(self.as_str(), f) - } -} |