mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-30 13:51:31 +00:00
syntax: return owned string instead of leaking string
This commit is contained in:
parent
4ecaad98e0
commit
5ff3299dd6
16 changed files with 27 additions and 27 deletions
|
@ -268,14 +268,14 @@ pub fn arg_list(args: impl IntoIterator<Item = ast::Expr>) -> ast::ArgList {
|
|||
}
|
||||
|
||||
pub fn ident_pat(name: ast::Name) -> ast::IdentPat {
|
||||
return from_text(name.text());
|
||||
return from_text(&name.text());
|
||||
|
||||
fn from_text(text: &str) -> ast::IdentPat {
|
||||
ast_from_text(&format!("fn f({}: ())", text))
|
||||
}
|
||||
}
|
||||
pub fn ident_mut_pat(name: ast::Name) -> ast::IdentPat {
|
||||
return from_text(name.text());
|
||||
return from_text(&name.text());
|
||||
|
||||
fn from_text(text: &str) -> ast::IdentPat {
|
||||
ast_from_text(&format!("fn f(mut {}: ())", text))
|
||||
|
|
|
@ -12,19 +12,19 @@ use crate::{
|
|||
};
|
||||
|
||||
impl ast::Lifetime {
|
||||
pub fn text(&self) -> &str {
|
||||
pub fn text(&self) -> SmolStr {
|
||||
text_of_first_token(self.syntax())
|
||||
}
|
||||
}
|
||||
|
||||
impl ast::Name {
|
||||
pub fn text(&self) -> &str {
|
||||
pub fn text(&self) -> SmolStr {
|
||||
text_of_first_token(self.syntax())
|
||||
}
|
||||
}
|
||||
|
||||
impl ast::NameRef {
|
||||
pub fn text(&self) -> &str {
|
||||
pub fn text(&self) -> SmolStr {
|
||||
text_of_first_token(self.syntax())
|
||||
}
|
||||
|
||||
|
@ -33,10 +33,8 @@ impl ast::NameRef {
|
|||
}
|
||||
}
|
||||
|
||||
fn text_of_first_token(node: &SyntaxNode) -> &str {
|
||||
let t =
|
||||
node.green().children().next().and_then(|it| it.into_token()).unwrap().text().to_string();
|
||||
Box::leak(Box::new(t))
|
||||
fn text_of_first_token(node: &SyntaxNode) -> SmolStr {
|
||||
node.green().children().next().and_then(|it| it.into_token()).unwrap().text().into()
|
||||
}
|
||||
|
||||
pub enum Macro {
|
||||
|
@ -378,7 +376,7 @@ impl fmt::Display for NameOrNameRef {
|
|||
}
|
||||
|
||||
impl NameOrNameRef {
|
||||
pub fn text(&self) -> &str {
|
||||
pub fn text(&self) -> SmolStr {
|
||||
match self {
|
||||
NameOrNameRef::Name(name) => name.text(),
|
||||
NameOrNameRef::NameRef(name_ref) => name_ref.text(),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue