| 716 | } |
| 717 | |
| 718 | fn visit_MemberCall(&mut self, ctx: &MemberCallContext<'_>) -> Self::Return { |
| 719 | if let (Some(operand), Some(id), Some(open)) = (&ctx.member(), &ctx.id, &ctx.open) { |
| 720 | let operand = self.visit(operand.as_ref()); |
| 721 | let id = id.get_text(); |
| 722 | let op_id = self.helper.next_id(open.as_ref()); |
| 723 | let args = ctx |
| 724 | .args |
| 725 | .iter() |
| 726 | .flat_map(|arg| &arg.e) |
| 727 | .map(|arg| self.visit(arg.deref())) |
| 728 | .collect::<Vec<IdedExpr>>(); |
| 729 | self.receiver_call_or_macro(op_id, id.to_string(), operand, args) |
| 730 | } else { |
| 731 | self.report_error::<ParseError, _>( |
| 732 | &ctx.start(), |
| 733 | None, |
| 734 | "Incomplete `MemberCallContext`!", |
| 735 | ) |
| 736 | } |
| 737 | } |
| 738 | |
| 739 | fn visit_Select(&mut self, ctx: &SelectContext<'_>) -> Self::Return { |
| 740 | if let (Some(member), Some(id), Some(op)) = (&ctx.member(), &ctx.id, &ctx.op) { |