Auto merge of #59227 - Zoxc:fix-get, r=eddyb
Fix lifetime on LocalInternedString::get function cc @eddyb @nnethercote
This commit is contained in:
commit
cd8b437362
@ -622,7 +622,7 @@ impl<'a> State<'a> {
|
||||
}
|
||||
hir::ItemKind::GlobalAsm(ref ga) => {
|
||||
self.head(visibility_qualified(&item.vis, "global asm"))?;
|
||||
self.s.word(ga.asm.as_str().get())?;
|
||||
self.s.word(ga.asm.as_str().to_string())?;
|
||||
self.end()?
|
||||
}
|
||||
hir::ItemKind::Ty(ref ty, ref generics) => {
|
||||
@ -1591,7 +1591,7 @@ impl<'a> State<'a> {
|
||||
if ident.is_raw_guess() {
|
||||
self.s.word(format!("r#{}", ident.name))?;
|
||||
} else {
|
||||
self.s.word(ident.as_str().get())?;
|
||||
self.s.word(ident.as_str().to_string())?;
|
||||
}
|
||||
self.ann.post(self, AnnNode::Name(&ident.name))
|
||||
}
|
||||
@ -1998,7 +1998,7 @@ impl<'a> State<'a> {
|
||||
self.commasep(Inconsistent, &decl.inputs, |s, ty| {
|
||||
s.ibox(indent_unit)?;
|
||||
if let Some(arg_name) = arg_names.get(i) {
|
||||
s.s.word(arg_name.as_str().get())?;
|
||||
s.s.word(arg_name.as_str().to_string())?;
|
||||
s.s.word(":")?;
|
||||
s.s.space()?;
|
||||
} else if let Some(body_id) = body_id {
|
||||
|
@ -2165,9 +2165,11 @@ impl<'a> Parser<'a> {
|
||||
suffix,
|
||||
) = self.token {
|
||||
let suffix = suffix.and_then(|s| {
|
||||
let s = s.as_str().get();
|
||||
if ["f32", "f64"].contains(&s) {
|
||||
Some(s)
|
||||
let s = s.as_str();
|
||||
if s == "f32" {
|
||||
Some("f32")
|
||||
} else if s == "f64" {
|
||||
Some("f64")
|
||||
} else {
|
||||
None
|
||||
}
|
||||
|
@ -645,7 +645,7 @@ pub trait PrintState<'a> {
|
||||
ast::LitKind::Float(ref f, t) => {
|
||||
self.writer().word(format!("{}{}", &f, t.ty_to_string()))
|
||||
}
|
||||
ast::LitKind::FloatUnsuffixed(ref f) => self.writer().word(f.as_str().get()),
|
||||
ast::LitKind::FloatUnsuffixed(ref f) => self.writer().word(f.as_str().to_string()),
|
||||
ast::LitKind::Bool(val) => {
|
||||
if val { self.writer().word("true") } else { self.writer().word("false") }
|
||||
}
|
||||
@ -731,7 +731,7 @@ pub trait PrintState<'a> {
|
||||
if segment.ident.name == keywords::DollarCrate.name() {
|
||||
self.print_dollar_crate(segment.ident)?;
|
||||
} else {
|
||||
self.writer().word(segment.ident.as_str().get())?;
|
||||
self.writer().word(segment.ident.as_str().to_string())?;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -749,7 +749,7 @@ pub trait PrintState<'a> {
|
||||
}
|
||||
self.maybe_print_comment(attr.span.lo())?;
|
||||
if attr.is_sugared_doc {
|
||||
self.writer().word(attr.value_str().unwrap().as_str().get())?;
|
||||
self.writer().word(attr.value_str().unwrap().as_str().to_string())?;
|
||||
self.writer().hardbreak()
|
||||
} else {
|
||||
match attr.style {
|
||||
@ -858,7 +858,7 @@ pub trait PrintState<'a> {
|
||||
if !ast::Ident::with_empty_ctxt(name).is_path_segment_keyword() {
|
||||
self.writer().word("::")?;
|
||||
}
|
||||
self.writer().word(name.as_str().get())
|
||||
self.writer().word(name.as_str().to_string())
|
||||
}
|
||||
}
|
||||
|
||||
@ -1300,7 +1300,7 @@ impl<'a> State<'a> {
|
||||
}
|
||||
ast::ItemKind::GlobalAsm(ref ga) => {
|
||||
self.head(visibility_qualified(&item.vis, "global_asm!"))?;
|
||||
self.s.word(ga.asm.as_str().get())?;
|
||||
self.s.word(ga.asm.as_str().to_string())?;
|
||||
self.end()?;
|
||||
}
|
||||
ast::ItemKind::Ty(ref ty, ref generics) => {
|
||||
@ -2437,7 +2437,7 @@ impl<'a> State<'a> {
|
||||
if ident.is_raw_guess() {
|
||||
self.s.word(format!("r#{}", ident))?;
|
||||
} else {
|
||||
self.s.word(ident.as_str().get())?;
|
||||
self.s.word(ident.as_str().to_string())?;
|
||||
}
|
||||
self.ann.post(self, AnnNode::Ident(&ident))
|
||||
}
|
||||
@ -2447,7 +2447,7 @@ impl<'a> State<'a> {
|
||||
}
|
||||
|
||||
pub fn print_name(&mut self, name: ast::Name) -> io::Result<()> {
|
||||
self.s.word(name.as_str().get())?;
|
||||
self.s.word(name.as_str().to_string())?;
|
||||
self.ann.post(self, AnnNode::Name(&name))
|
||||
}
|
||||
|
||||
|
@ -336,11 +336,11 @@ impl Ident {
|
||||
}
|
||||
}
|
||||
fn new(sym: Symbol, is_raw: bool, span: Span) -> Ident {
|
||||
let string = sym.as_str().get();
|
||||
if !Self::is_valid(string) {
|
||||
let string = sym.as_str();
|
||||
if !Self::is_valid(&string) {
|
||||
panic!("`{:?}` is not a valid identifier", string)
|
||||
}
|
||||
if is_raw && !ast::Ident::from_str(string).can_be_raw() {
|
||||
if is_raw && !ast::Ident::from_interned_str(sym.as_interned_str()).can_be_raw() {
|
||||
panic!("`{}` cannot be a raw identifier", string);
|
||||
}
|
||||
Ident { sym, is_raw, span }
|
||||
|
@ -524,7 +524,11 @@ impl LocalInternedString {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn get(&self) -> &'static str {
|
||||
pub fn get(&self) -> &str {
|
||||
// This returns a valid string since we ensure that `self` outlives the interner
|
||||
// by creating the interner on a thread which outlives threads which can access it.
|
||||
// This type cannot move to a thread which outlives the interner since it does
|
||||
// not implement Send.
|
||||
self.string
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user