diff --git a/basis/classes/struct/struct.factor b/basis/classes/struct/struct.factor index 7a9b05aa67..f16b4be1d8 100644 --- a/basis/classes/struct/struct.factor +++ b/basis/classes/struct/struct.factor @@ -321,13 +321,23 @@ ERROR: invalid-struct-slot token ; c-type c-type-boxed-class dup \ byte-array = [ drop \ c-ptr ] when ; +: forget-struct-accessors ( class -- ) + dup "c-type" word-prop fields>> [ + name>> + [ reader-word ?lookup-method forget ] + [ writer-word ?lookup-method forget ] 2bi + ] with each ; + M: struct-class reset-class - [ call-next-method ] - [ - [ forget-struct-slot-values-method ] - [ forget-clone-method ] bi - ] - [ { "c-type" "layout" "struct-size" } reset-props ] tri ; + { + [ forget-struct-accessors ] + [ + [ forget-struct-slot-values-method ] + [ forget-clone-method ] bi + ] + [ { "c-type" "layout" "struct-size" } reset-props ] + [ call-next-method ] + } cleave ; SYMBOL: bits: