Fix tuple redefinition bug

db4
Slava Pestov 2008-07-10 02:11:49 -05:00
parent 5d9c1ea0a0
commit 498986fe88
2 changed files with 22 additions and 4 deletions

View File

@ -683,3 +683,17 @@ DEFER: error-y
[ t ] [ \ error-y tuple-class? ] unit-test
[ f ] [ \ error-y generic? ] unit-test
[ ] [
"IN: classes.tuple.tests TUPLE: forget-subclass-test ; TUPLE: forget-subclass-test' < forget-subclass-test ;"
<string-reader> "forget-subclass-test" parse-stream
drop
] unit-test
[ ] [ "forget-subclass-test'" "classes.tuple.tests" lookup new "bad-object" set ] unit-test
[ ] [
"IN: classes.tuple.tests TUPLE: forget-subclass-test a ;"
<string-reader> "forget-subclass-test" parse-stream
drop
] unit-test

View File

@ -194,13 +194,17 @@ ERROR: bad-superclass class ;
[ permute-slots ] [ class>> ] bi
slots>tuple ;
: outdated-tuple? ( tuple assoc -- ? )
over tuple? [
[ [ layout-of ] dip key? ]
[ drop class "forgotten" word-prop not ]
2bi and
] [ 2drop f ] if ;
: update-tuples ( -- )
outdated-tuples get
dup assoc-empty? [ drop ] [
[
over tuple?
[ >r layout-of r> key? ] [ 2drop f ] if
] curry instances
[ outdated-tuple? ] curry instances
dup [ update-tuple ] map become
] if ;