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) ;