Desugar and type check let