(&mut self, prefix: &str, func: &Function, interface: Option<&WorldKey>)
| 480 | } |
| 481 | |
| 482 | fn generate_payloads(&mut self, prefix: &str, func: &Function, interface: Option<&WorldKey>) { |
| 483 | let old_identifier = mem::replace(&mut self.identifier, Identifier::StreamOrFuturePayload); |
| 484 | |
| 485 | for (index, ty) in func |
| 486 | .find_futures_and_streams(self.resolve) |
| 487 | .into_iter() |
| 488 | .enumerate() |
| 489 | { |
| 490 | let module = format!( |
| 491 | "{prefix}{}", |
| 492 | interface |
| 493 | .map(|name| self.resolve.name_world_key(name)) |
| 494 | .unwrap_or_else(|| "$root".into()) |
| 495 | ); |
| 496 | let func_name = &func.name; |
| 497 | |
| 498 | match &self.resolve.types[ty].kind { |
| 499 | TypeDefKind::Future(payload_type) => { |
| 500 | self.generate_payload( |
| 501 | PayloadFor::Future, |
| 502 | &module, |
| 503 | index, |
| 504 | func_name, |
| 505 | payload_type.as_ref(), |
| 506 | ); |
| 507 | } |
| 508 | TypeDefKind::Stream(payload_type) => { |
| 509 | self.generate_payload( |
| 510 | PayloadFor::Stream, |
| 511 | &module, |
| 512 | index, |
| 513 | func_name, |
| 514 | payload_type.as_ref(), |
| 515 | ); |
| 516 | } |
| 517 | _ => unreachable!(), |
| 518 | } |
| 519 | } |
| 520 | |
| 521 | self.identifier = old_identifier; |
| 522 | } |
| 523 | |
| 524 | fn generate_payload( |
| 525 | &mut self, |
no test coverage detected