From d2204bfd17bc2ec7efd9a1a790c919d9a913f59d Mon Sep 17 00:00:00 2001 From: Stephen Chang Date: Sat, 8 Oct 2011 15:54:09 -0400 Subject: [PATCH] fix lazy stepper bug: annota of non-identifier fns - fix lazy stepper bug where delaying of non-identifier fns wasnt being properly hidden - add test case for this bug include in 5.2 (cherry picked from commit 79dd7df9451627b206f97ede04ea223516a75088) --- collects/lazy/lazy.rkt | 5 ++++- collects/tests/stepper/automatic-tests.rkt | 2 +- collects/tests/stepper/test-cases.rkt | 12 ++++++++++-- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/collects/lazy/lazy.rkt b/collects/lazy/lazy.rkt index 006a984928..e302b9a034 100644 --- a/collects/lazy/lazy.rkt +++ b/collects/lazy/lazy.rkt @@ -78,7 +78,10 @@ (define-syntax (mark-as-lazy-op stx) (syntax-case stx () - [(_ arg) (stepper-add-lazy-op-prop (syntax/loc stx arg))])) + [(_ arg) + (identifier? #'arg) + (stepper-add-lazy-op-prop (syntax/loc stx arg))] + [(_ arg) #'arg])) (define-syntax (hidden-~ stx) (syntax-case stx () diff --git a/collects/tests/stepper/automatic-tests.rkt b/collects/tests/stepper/automatic-tests.rkt index c5d23c8c4f..dc7a7a750a 100644 --- a/collects/tests/stepper/automatic-tests.rkt +++ b/collects/tests/stepper/automatic-tests.rkt @@ -23,7 +23,7 @@ lazy-length lazy-list-ref lazy-list-tail lazy-append lazy-reverse lazy-empty? lazy-assoc lazy-assq lazy-assv lazy-cons? lazy-remove lazy-remq lazy-remv lazy-member lazy-memq lazy-memv lazy-filter1 lazy-filter2 lazy-fold - lazy-cyclic1)) + lazy-cyclic1 lazy-fn-app)) (let ((outer-namespace (current-namespace))) (parameterize ([display-only-errors #t] diff --git a/collects/tests/stepper/test-cases.rkt b/collects/tests/stepper/test-cases.rkt index 7eb7984ff7..be305019b3 100644 --- a/collects/tests/stepper/test-cases.rkt +++ b/collects/tests/stepper/test-cases.rkt @@ -2132,8 +2132,16 @@ -> ,def (+ 1 {1}) :: ,def {(+ 1 1)} -> ,def {2})) - - + ; application in function position -- checks bug fix + (let* ([lxx '(lambda (x) x)] + [def `(define I ,lxx)]) + (t 'lazy-fn-app m:lazy + ,def ((I I) I) + :: ,def (({I} I) I) -> ,def (({,lxx} I) I) + :: ,def ((,lxx {I}) I) -> ,def ((,lxx {,lxx}) I) + :: ,def ({(,lxx ,lxx)} I) -> ,def ({,lxx} I) + :: ,def (,lxx {I}) -> ,def (,lxx {,lxx}) + :: ,def {(,lxx ,lxx)} -> ,def {,lxx})) #;