WHNF, then ensure it's a Sort. Returns the universe level.
(&mut self, e: &KExpr<M>)
| 641 | } |
| 642 | |
| 643 | // ----------------------------------------------------------------------- |
| 644 | // Universe helpers |
| 645 | // ----------------------------------------------------------------------- |
| 646 | |
| 647 | /// WHNF, then ensure it's a Sort. Returns the universe level. |
| 648 | pub fn ensure_sort(&mut self, e: &KExpr<M>) -> Result<KUniv<M>, TcError<M>> { |
| 649 | // Fast path: already a Sort, skip WHNF + tick. |
| 650 | if let ExprData::Sort(u, _) = e.data() { |
| 651 | return Ok(u.clone()); |
| 652 | } |
| 653 | let w = self.whnf(e)?; |
| 654 | match w.data() { |
| 655 | ExprData::Sort(u, _) => Ok(u.clone()), |
| 656 | _ => Err(TcError::TypeExpected), |