fix infinite ping-pong caused by single neg idx
cleanup the ast.walker used by '[' around neg idx