Originally we used contextual types to decide when to infer a string literal type. If a string literal had a contextual type, we'd create a literal type for the string. That was the only change.
We ran into two basic problems:
- When you want to infer a string literal type for a variable, you always have to write a type annotation.