desugaring for let/def expressions, more error handling, expanded test cases