Just check
i_: 0 | 1 // FullForm
In v12.0 or earlier the output is
Alternatives[Optional[Pattern[i, Blank[]], 0], 1]
But in v12.1 the output becomes
Optional[Pattern[i, Blank[]], Alternatives[0, 1]]
Seems that the precedence between :
and |
varies in v12.1. Is this an intentional change, or a bug?
Some more observations. Behavior in v3:
Behavior in v2.1:
ToExpression["i_: 0 | 1 // FullForm"]
. It parses the same way as in 12.1.1. I expect this fixed an inconsistency between the FE's and the kernel's parser. $\endgroup$(i_ : 0) | 1
ori_ : (0 | 1)
. $\endgroup$