ID:1950007
 
BYOND Version:508
Operating System:Windows 7 Ultimate 64-bit
Web Browser:Chrome 46.0.2490.42
Applies to:DM Language
Status: Open

Issue hasn't been assigned a status value.
Descriptive Problem Summary:

if (i > o || g == 2) <--- works, treated as if ((i > o) || (g == 2))
if (i in o || g == 2) <--- doesn't work, treated as if (i in (o || g) == 2)
if (i in o || b in o) <--- doesn't work, treated as if (i in (o || b) in o)

If this isn't a "proper" bug, it's a damn big usability bug.

I just spent the last 2 hours trying to track down a bug in my code that was caused by this little oddity.
Tom mentioned probably 2-3 years ago about raising its precedence. It never happened, though.
Yeah I remember we fixed a bug resulting from the same behavior
There's another issue on this somewhere.

The problem with raising the precedence is figuring out how to deal with in the recursive descent parser.
In response to Ter13
Ter13 wrote:
Tom mentioned probably 2-3 years ago about raising its precedence. It never happened, though.

According to Lummox, the way operator priority is handled in the parser is super difficult to change. (source)

dupes/relevant:
id:1686955
id:1605373
In response to Super Saiyan X
Is there some kind of method that could give it pseudo-priority before the actual batch parsing?