Look at the commit message. The goal is to reduce the number of code paths where we have to check for literal overflow. Using this, the case TOKEN_OP_NEG + TOKEN_INT_LITERAL is reduced to the case negative TOKEN_INT_LITERAL. So only one code path, instead of two. It tried without this, but it got really messy. If you put up a better method, you are more than welcome.