Changes to polymorphic literals
A common misconception is that polymorphic literals, like integers and strings, themselves introduce overloads, where every concrete type conforming to an ExpressibleBy* protocol adds a disjunction choice to the literal. This isn't quite right; a literal such as "hello world" will type check if a concrete type is known from the surrounding code, and if that fails, via a default type, which is String in this case. So while this acts as a disjunction of sorts, in this case the disjunction only has two choices, and often the default is not attempted at all.
However, an integer literal such as 123 actually has two default types, Int and Double, and the resulting disjunction has three choices. It might be worth considering a language change where floating point literals must be spelled with a decimal point. Today, expressions involving mixed integer and double literals can be particularly tricky to type check, for this reason.