(&self, rhs: &Self)
| 274 | } |
| 275 | |
| 276 | pub fn meet(&self, rhs: &Self) -> Self { |
| 277 | if self.is_bottom() || rhs.is_bottom() { |
| 278 | return Self::bottom(); |
| 279 | } |
| 280 | if self.is_top() { |
| 281 | return rhs.clone(); |
| 282 | } |
| 283 | if rhs.is_top() { |
| 284 | return self.clone(); |
| 285 | } |
| 286 | let mut res = Self::top(); |
| 287 | for path in union_paths(self, rhs) { |
| 288 | let met = meet_interval(&self.var2itv(&path), &rhs.var2itv(&path)); |
| 289 | if met.is_bottom() { |
| 290 | return Self::bottom(); |
| 291 | } |
| 292 | res.set_interval(&path, met); |
| 293 | } |
| 294 | res |
| 295 | } |
| 296 | |
| 297 | pub fn apply_bin_op_place_place( |
| 298 | &mut self, |
no test coverage detected