Previously we had blocks in the concrete syntax and in Core but we turned them into nested let expressions during abstract syntax parsing and back again during inference. It wasn't a major problem but it led to some unexpected errors to do with escaping type variables when we tried to implement automatic dependent pair unpacking.
This change might also improve the quality of source location information since it makes UExpr closer to the actual source text.
Previously we had blocks in the concrete syntax and in Core but we turned them into nested let expressions during abstract syntax parsing and back again during inference. It wasn't a major problem but it led to some unexpected errors to do with escaping type variables when we tried to implement automatic dependent pair unpacking.
This change might also improve the quality of source location information since it makes UExpr closer to the actual source text.