diff --git a/collects/swindle/readme.txt b/collects/swindle/readme.txt index 205413c95b..201eb6b6d6 100644 --- a/collects/swindle/readme.txt +++ b/collects/swindle/readme.txt @@ -152,6 +152,6 @@ Copyright (C) 1998-2007 Eli Barzilay (eli@barzilay.org) You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301 USA + 02110-1301 USA. ====< * >=============================================================== diff --git a/collects/swindle/tiny-clos.ss b/collects/swindle/tiny-clos.ss index d3342b915e..f23e1ef5d8 100644 --- a/collects/swindle/tiny-clos.ss +++ b/collects/swindle/tiny-clos.ss @@ -496,17 +496,20 @@ (define* (struct-type->class stype) (hash-table-get struct-to-class-table stype - (thunk (let-values ([(name init-field-k auto-field-k accessor mutator - immutable-k-list super skipped?) - (struct-type-info stype)]) - (let* ([super (cond [super (struct-type->class super)] - [skipped? ] - [else ])] - [this (parameterize ([*default-object-class* #f]) - (make - :name name :direct-supers (list super)))]) - (hash-table-put! struct-to-class-table stype this) - this))))) + (thunk + (let-values ([(name init-field-k auto-field-k accessor mutator + immutable-k-list super skipped?) + (struct-type-info stype)]) + (let* ([supers (list (cond [super (struct-type->class super)] + [skipped? ] + [else ]))] + [proc? (procedure-struct-type? stype)] + [supers (if proc? (cons supers) supers)] + [this (parameterize ([*default-object-class* #f]) + (make (if proc? ) + :name name :direct-supers (list super)))]) + (hash-table-put! struct-to-class-table stype this) + this))))) ;;>>... ;;> *** Common accessors