MCPcopy Create free account
hub / github.com/Rust-GPU/rust-gpu / into_replacements

Method into_replacements

crates/rustc_codegen_spirv/src/linker/specializer.rs:2181–2209  ·  view source on GitHub ↗

Consume the `InferCx` and return a set of replacements that need to be performed to instantiate the global/function inferred with this `InferCx`. See `resolve_infer_var_to_concrete_or_param` for how inference variables are handled (using `generic_params` and `S::concrete_fallback()`).

(mut self, generic_params: RangeTo<Param>)

Source from the content-addressed store, hash-verified

2179 /// See `resolve_infer_var_to_concrete_or_param` for how inference variables
2180 /// are handled (using `generic_params` and `S::concrete_fallback()`).
2181 fn into_replacements(mut self, generic_params: RangeTo<Param>) -> Replacements {
2182 let mut with_instance: IndexMap<_, Vec<_>> = IndexMap::new();
2183 for (loc, instance) in mem::take(&mut self.instantiated_operands) {
2184 with_instance
2185 .entry(Instance {
2186 generic_id: instance.generic_id,
2187 generic_args: InferVar::range_iter(&instance.generic_args)
2188 .map(|v| self.resolve_infer_var_to_concrete_or_param(v, generic_params))
2189 .collect(),
2190 })
2191 .or_default()
2192 .push(loc);
2193 }
2194
2195 let with_concrete_or_param = mem::take(&mut self.inferred_operands)
2196 .into_iter()
2197 .map(|(loc, v)| {
2198 (
2199 loc,
2200 self.resolve_infer_var_to_concrete_or_param(v, generic_params),
2201 )
2202 })
2203 .collect();
2204
2205 Replacements {
2206 with_instance,
2207 with_concrete_or_param,
2208 }
2209 }
2210}
2211
2212// HACK(eddyb) this state could live in `Specializer` except for the fact that

Callers 2

collect_genericsMethod · 0.80
infer_functionMethod · 0.80

Calls 3

into_iterMethod · 0.80
collectMethod · 0.45

Tested by

no test coverage detected