From 600bf6bcdc3b2535d0e1d8f067c7cc72b766a931 Mon Sep 17 00:00:00 2001 From: Joe Groff <arcata@gmail.com> Date: Tue, 18 Aug 2009 10:26:45 -0500 Subject: [PATCH] don't use setter words from classes.struct boa>object, otherwise struct literals of classes in the current compilation unit won't compile --- extra/classes/struct/struct.factor | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/extra/classes/struct/struct.factor b/extra/classes/struct/struct.factor index 90224c96d5..d52c25e413 100644 --- a/extra/classes/struct/struct.factor +++ b/extra/classes/struct/struct.factor @@ -44,13 +44,17 @@ MACRO: <struct-boa> ( class -- quot: ( ... -- struct ) ) ] bi ] [ ] output>sequence ; -: pad-struct-slots ( slots class -- slots' class ) +: pad-struct-slots ( values class -- values' class ) [ class-slots [ initial>> ] map over length tail append ] keep ; +: (writer-quot) ( slot -- quot ) + [ class>> c-setter ] + [ offset>> [ >c-ptr ] swap suffix ] bi prepend ; + M: struct-class boa>object swap pad-struct-slots - [ (struct) swap ] [ "struct-slots" word-prop ] bi - [ name>> setter-word execute( struct value -- struct ) ] 2each ; + [ (struct) ] [ "struct-slots" word-prop ] bi + [ [ (writer-quot) call( value struct -- ) ] with 2each ] curry keep ; ! Struct slot accessors @@ -59,10 +63,6 @@ M: struct-class reader-quot [ class>> c-type-getter-boxer ] [ offset>> [ >c-ptr ] swap suffix ] bi prepend ; -: (writer-quot) ( slot -- quot ) - [ class>> c-setter ] - [ offset>> [ >c-ptr ] swap suffix ] bi prepend ; - M: struct-class writer-quot nip (writer-quot) ;