avm2: Add `get_ascii_char` to `AvmStringInterner` and use it

This commit is contained in:
Lord-McSweeney 2024-09-11 10:10:26 -07:00 committed by Lord-McSweeney
parent b3769aa6f2
commit 42b44901fc
3 changed files with 10 additions and 8 deletions

View File

@ -465,12 +465,10 @@ impl<'gc> Multiname<'gc> {
/// Like `to_qualified_name`, but returns `*` if `self.is_any()` is true.
/// This is used by `describeType`
pub fn to_qualified_name_or_star(&self, context: &mut GcContext<'_, 'gc>) -> AvmString<'gc> {
let mc = context.gc_context;
if self.is_any_name() {
context.interner.get_char(mc, '*' as u16)
context.interner.get_ascii_char('*')
} else {
self.to_qualified_name(mc)
self.to_qualified_name(context.gc_context)
}
}

View File

@ -130,12 +130,10 @@ impl<'gc> PropertyClass<'gc> {
}
pub fn get_name(&self, context: &mut GcContext<'_, 'gc>) -> AvmString<'gc> {
let mc = context.gc_context;
match self {
PropertyClass::Class(class) => class.name().to_qualified_name(mc),
PropertyClass::Class(class) => class.name().to_qualified_name(context.gc_context),
PropertyClass::Name(gc) => gc.0.to_qualified_name_or_star(context),
PropertyClass::Any => context.interner.get_char(mc, '*' as u16),
PropertyClass::Any => context.interner.get_ascii_char('*'),
}
}
}

View File

@ -155,6 +155,12 @@ impl<'gc> AvmStringInterner<'gc> {
}
}
// Like get_char, but panics if the passed char is not ASCII.
#[must_use]
pub fn get_ascii_char(&self, c: char) -> AvmString<'gc> {
self.chars[c as usize].into()
}
#[must_use]
pub fn substring(
&self,