From de60c00f56c3468afae038f48569ff0f05ef5b4b Mon Sep 17 00:00:00 2001 From: Ryan Culpepper Date: Wed, 1 Feb 2017 19:05:13 -0500 Subject: [PATCH] syntax/parse: fix ps->stx+index; fixes #1602 Collapse CDR frames separated by ORD, POST, etc. For example, (1 ORD 2 stx) should be same as (3 stx). --- .../collects/syntax/parse/private/runtime-report.rkt | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/racket/collects/syntax/parse/private/runtime-report.rkt b/racket/collects/syntax/parse/private/runtime-report.rkt index 8029e9f6aa..80ac75fe0e 100644 --- a/racket/collects/syntax/parse/private/runtime-report.rkt +++ b/racket/collects/syntax/parse/private/runtime-report.rkt @@ -262,18 +262,19 @@ ie (ps->stx+index ps1) = (ps->stx+index ps2). (interp parent)] [(cons 'post parent) (interp parent)])) - (let ([ps (ps-truncate-opaque ps)]) + (let loop ([ps (ps-truncate-opaque ps)]) (match ps [(cons (? syntax? stx) _) (cons stx 0)] - [(cons 'car parent) + [(cons 'car _) (cons (interp ps) 0)] [(cons (? exact-positive-integer? n) parent) - (cons (interp parent) n)] + (match (loop parent) + [(cons stx m) (cons stx (+ m n))])] [(cons (? ord?) parent) - (ps->stx+index parent)] + (loop parent)] [(cons 'post parent) - (ps->stx+index parent)]))) + (loop parent)]))) ;; ============================================================