diff --git a/naga/src/back/msl/writer.rs b/naga/src/back/msl/writer.rs index 1bae7f2f62..206e546687 100644 --- a/naga/src/back/msl/writer.rs +++ b/naga/src/back/msl/writer.rs @@ -599,11 +599,23 @@ impl crate::Type { } } +#[derive(Clone, Copy)] enum FunctionOrigin { Handle(Handle), EntryPoint(proc::EntryPointIndex), } +trait NameKeyExt { + fn local(origin: FunctionOrigin, local_handle: Handle) -> NameKey { + match origin { + FunctionOrigin::Handle(handle) => NameKey::FunctionLocal(handle, local_handle), + FunctionOrigin::EntryPoint(idx) => NameKey::EntryPointLocal(idx, local_handle), + } + } +} + +impl NameKeyExt for NameKey {} + /// A level of detail argument. /// /// When [`BoundsCheckPolicy::Restrict`] applies to an [`ImageLoad`] access, we @@ -1750,14 +1762,7 @@ impl Writer { write!(self.out, "{name}")?; } crate::Expression::LocalVariable(handle) => { - let name_key = match context.origin { - FunctionOrigin::Handle(fun_handle) => { - NameKey::FunctionLocal(fun_handle, handle) - } - FunctionOrigin::EntryPoint(ep_index) => { - NameKey::EntryPointLocal(ep_index, handle) - } - }; + let name_key = NameKey::local(context.origin, handle); let name = &self.names[&name_key]; write!(self.out, "{name}")?; }