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) | 1ori_ : (0 | 1). $\endgroup$