(
&mut self,
seq: Vec<&TaintData>,
previous_data: &Option<&TaintData>,
subsequent_data: &Option<&TaintData>,
)
| 758 | } |
| 759 | |
| 760 | fn build_from_single_path_subseq( |
| 761 | &mut self, |
| 762 | seq: Vec<&TaintData>, |
| 763 | previous_data: &Option<&TaintData>, |
| 764 | subsequent_data: &Option<&TaintData>, |
| 765 | ) -> Result<()> { |
| 766 | if seq.is_empty() { |
| 767 | return Ok(()); |
| 768 | } |
| 769 | let mut first = seq.first().unwrap(); |
| 770 | self.add_node(first); |
| 771 | if let Some(previous) = previous_data { |
| 772 | self.add_edge(previous, first)?; |
| 773 | } |
| 774 | for next in &seq[1..] { |
| 775 | self.add_edge(first, next)?; |
| 776 | first = next; |
| 777 | } |
| 778 | let last = seq.last().unwrap(); |
| 779 | if let Some(subsequent) = subsequent_data { |
| 780 | self.add_edge(last, subsequent)?; |
| 781 | } |
| 782 | Ok(()) |
| 783 | } |
| 784 | |
| 785 | /// build the graph with subseq. Subseq is strated with [Merge] and ended with [Join], where data of control flows are separated by [Sep]. |
| 786 | fn build_from_subseq( |
no test coverage detected