Fix literal rewriting for macro expansions that use fry to splice in a quot

db4
Slava Pestov 2008-11-26 00:59:12 -06:00
parent 4e9495a7e7
commit d334c60897
2 changed files with 9 additions and 0 deletions

View File

@ -429,6 +429,8 @@ M:: integer lambda-method-forget-test ( a -- b ) ;
\ FAILdog-2 must-infer \ FAILdog-2 must-infer
[ 3 ] [ 3 [| a | \ a ] call ] unit-test
! :: wlet-&&-test ( a -- ? ) ! :: wlet-&&-test ( a -- ? )
! [wlet | is-integer? [ a integer? ] ! [wlet | is-integer? [ a integer? ]
! is-even? [ a even? ] ! is-even? [ a even? ]

View File

@ -206,6 +206,8 @@ M: array rewrite-literal? [ rewrite-literal? ] contains? ;
M: quotation rewrite-literal? [ rewrite-literal? ] contains? ; M: quotation rewrite-literal? [ rewrite-literal? ] contains? ;
M: wrapper rewrite-literal? drop t ;
M: hashtable rewrite-literal? drop t ; M: hashtable rewrite-literal? drop t ;
M: vector rewrite-literal? drop t ; M: vector rewrite-literal? drop t ;
@ -243,6 +245,9 @@ M: local-reader rewrite-element , ;
M: word rewrite-element literalize , ; M: word rewrite-element literalize , ;
M: wrapper rewrite-element
dup rewrite-literal? [ wrapped>> rewrite-element ] [ , ] if ;
M: object rewrite-element , ; M: object rewrite-element , ;
M: array local-rewrite* rewrite-element ; M: array local-rewrite* rewrite-element ;
@ -253,6 +258,8 @@ M: tuple local-rewrite* rewrite-element ;
M: hashtable local-rewrite* rewrite-element ; M: hashtable local-rewrite* rewrite-element ;
M: wrapper local-rewrite* rewrite-element ;
M: word local-rewrite* M: word local-rewrite*
dup { >r r> load-locals get-local drop-locals } memq? dup { >r r> load-locals get-local drop-locals } memq?
[ >r/r>-in-lambda-error ] [ call-next-method ] if ; [ >r/r>-in-lambda-error ] [ call-next-method ] if ;