Unnamed repository; edit this file 'description' to name the repository.
Remove the obsolete TokenText wrapper
bit-aloo 6 days ago
parent 9fb99c8 · commit 7cdbd11
-rw-r--r--crates/hir-expand/src/builtin/derive_macro.rs2
-rw-r--r--crates/ide-assists/src/handlers/apply_demorgan.rs4
-rw-r--r--crates/ide-assists/src/handlers/convert_into_to_from.rs2
-rw-r--r--crates/ide-assists/src/handlers/extract_struct_from_enum_variant.rs23
-rw-r--r--crates/ide-assists/src/handlers/generate_function.rs4
-rw-r--r--crates/ide-assists/src/handlers/generate_single_field_struct_from.rs16
-rw-r--r--crates/ide-assists/src/handlers/reorder_impl_items.rs2
-rw-r--r--crates/ide-assists/src/utils.rs2
-rw-r--r--crates/ide-assists/src/utils/gen_trait_fn_body.rs2
-rw-r--r--crates/ide-completion/src/completions/attribute.rs1
-rw-r--r--crates/ide-completion/src/completions/attribute/repr.rs2
-rw-r--r--crates/ide-completion/src/completions/postfix.rs2
-rw-r--r--crates/ide-db/src/imports/insert_use.rs2
-rw-r--r--crates/ide-db/src/imports/merge_imports.rs10
-rw-r--r--crates/ide-db/src/path_transform.rs2
-rw-r--r--crates/ide-db/src/ra_fixture.rs3
-rw-r--r--crates/ide-db/src/rename.rs2
-rw-r--r--crates/ide-db/src/search.rs8
-rw-r--r--crates/ide-ssr/src/resolving.rs2
-rw-r--r--crates/ide/src/inlay_hints/lifetime.rs12
-rw-r--r--crates/ide/src/inlay_hints/param_name.rs4
-rw-r--r--crates/span/src/ast_id.rs8
-rw-r--r--crates/syntax/src/ast/node_ext.rs30
-rw-r--r--crates/syntax/src/lib.rs2
-rw-r--r--crates/syntax/src/token_text.rs102
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)
- }
-}