pub struct Namer {
unique: FastHashMap<String, u32>,
keywords: &'static KeywordSet,
keywords_case_insensitive: &'static CaseInsensitiveKeywordSet,
reserved_prefixes: Vec<&'static str>,
}Expand description
This processor assigns names to all the things in a module that may need identifiers in a textual backend.
Fields§
§unique: FastHashMap<String, u32>The last numeric suffix used for each base name. Zero means “no suffix”.
keywords: &'static KeywordSet§keywords_case_insensitive: &'static CaseInsensitiveKeywordSet§reserved_prefixes: Vec<&'static str>Implementations§
Source§impl Namer
impl Namer
Sourcefn sanitize<'s>(&self, string: &'s str) -> Cow<'s, str>
fn sanitize<'s>(&self, string: &'s str) -> Cow<'s, str>
Return a form of string suitable for use as the base of an identifier.
- Drop leading digits.
- Retain only alphanumeric and
_characters. - Avoid prefixes in
Namer::reserved_prefixes. - Replace consecutive
_characters with a single_character.
The return value is a valid identifier prefix in all of Naga’s output languages,
and it never ends with a SEPARATOR character.
It is used as a key into the unique table.
Sourcepub fn call(&mut self, label_raw: &str) -> String
pub fn call(&mut self, label_raw: &str) -> String
Return a new identifier based on label_raw.
The result:
- is a valid identifier even if
label_rawis not - conflicts with no keywords listed in
Namer::keywords, and - is different from any identifier previously constructed by this
Namer.
Guarantee uniqueness by applying a numeric suffix when necessary. If label_raw
itself ends with digits, separate them from the suffix with an underscore.
pub fn call_or(&mut self, label: &Option<String>, fallback: &str) -> String
Sourcefn namespace(&mut self, capacity: usize, body: impl FnOnce(&mut Self))
fn namespace(&mut self, capacity: usize, body: impl FnOnce(&mut Self))
Enter a local namespace for things like structs.
Struct member names only need to be unique amongst themselves, not
globally. This function temporarily establishes a fresh, empty naming
context for the duration of the call to body.