sjbarag / brs

An interpreter for the BrightScript language that runs on non-Roku platforms.
MIT License
113 stars 43 forks source link

Wrong precedence for negative sign in front of a value on a expression #662

Open lvcabral opened 3 years ago

lvcabral commented 3 years ago

Try the code below:

Sub Main() 
    x = 96
    y = 56
    w = 1088
    h = 608
    Offset(-x + 96, -y + 56, -w + 1088, -h + 608)
End Sub
Sub Offset(x, y, w, h)
    print x, y, w, h
End Sub

This should print: 0 0 0 0 instead it prints: -192 -112 -2176 -1216

lvcabral commented 3 years ago

This was introduced recently, the root cause was this pull request: https://github.com/sjbarag/brs/pull/443

lvcabral commented 3 years ago

It is wrong for any case with negative number first, like the example below:

Off-Roku BrightScript interpreter [Version 0.44.0]

brs> print -1000 + 1000
-2000
brs> print +1000 - 1000
0