The previous code didn't take account for the fact that parseExpression my lex additional tokens - because of this, it's necessary to record the location of the current token ahead of the call. This patch additionally makes use of the fact parseExpression will set its End parameter to the end of the expression.
Although this fix could be added independently of D122127, I've opted to make it a child patch in order to ensure the change has some test coverage.