Determines the final type of a variable in a let statement based on both the
declared type (if any) and the initialization expression’s type.
Handles type inference and coercion of unspecified literals.
Converts unspecified literal types to concrete types.
This is used to assign a default concrete type when an unspecified literal
is used in a context where the type wasn’t explicitly given.