Bug fixes
parent
a5bc8363c6
commit
ec71ee0940
|
@ -166,6 +166,6 @@ GENERIC: method-forget-test
|
||||||
TUPLE: method-forget-class ;
|
TUPLE: method-forget-class ;
|
||||||
M: method-forget-class method-forget-test ;
|
M: method-forget-class method-forget-test ;
|
||||||
|
|
||||||
[ f ] [ \ method-forget-test "methods" assoc-empty? ] unit-test
|
[ f ] [ \ method-forget-test "methods" word-prop assoc-empty? ] unit-test
|
||||||
[ ] [ [ \ method-forget-class forget ] with-compilation-unit ] unit-test
|
[ ] [ [ \ method-forget-class forget ] with-compilation-unit ] unit-test
|
||||||
[ t ] [ \ method-forget-test "methods" assoc-empty? ] unit-test
|
[ t ] [ \ method-forget-test "methods" word-prop assoc-empty? ] unit-test
|
||||||
|
|
|
@ -4,7 +4,7 @@ namespaces quotations sequences.private classes continuations
|
||||||
generic.standard effects classes.tuple classes.tuple.private
|
generic.standard effects classes.tuple classes.tuple.private
|
||||||
arrays vectors strings compiler.units accessors classes.algebra
|
arrays vectors strings compiler.units accessors classes.algebra
|
||||||
calendar prettyprint io.streams.string splitting inspector
|
calendar prettyprint io.streams.string splitting inspector
|
||||||
columns math.order ;
|
columns math.order classes.private ;
|
||||||
IN: classes.tuple.tests
|
IN: classes.tuple.tests
|
||||||
|
|
||||||
TUPLE: rect x y w h ;
|
TUPLE: rect x y w h ;
|
||||||
|
@ -543,6 +543,7 @@ TUPLE: another-forget-accessors-test ;
|
||||||
! Missing error check
|
! Missing error check
|
||||||
[ "IN: classes.tuple.tests USE: words TUPLE: wrong-superclass < word ;" eval ] must-fail
|
[ "IN: classes.tuple.tests USE: words TUPLE: wrong-superclass < word ;" eval ] must-fail
|
||||||
|
|
||||||
|
! Class forget messyness
|
||||||
TUPLE: subclass-forget-test ;
|
TUPLE: subclass-forget-test ;
|
||||||
|
|
||||||
TUPLE: subclass-forget-test-1 < subclass-forget-test ;
|
TUPLE: subclass-forget-test-1 < subclass-forget-test ;
|
||||||
|
@ -551,6 +552,14 @@ TUPLE: subclass-forget-test-3 < subclass-forget-test-2 ;
|
||||||
|
|
||||||
[ ] [ "IN: classes.tuple.tests FORGET: subclass-forget-test" eval ] unit-test
|
[ ] [ "IN: classes.tuple.tests FORGET: subclass-forget-test" eval ] unit-test
|
||||||
|
|
||||||
|
[ H{ { subclass-forget-test-2 subclass-forget-test-2 } } ]
|
||||||
|
[ subclass-forget-test-2 class-usages ]
|
||||||
|
unit-test
|
||||||
|
|
||||||
|
[ H{ { subclass-forget-test-3 subclass-forget-test-3 } } ]
|
||||||
|
[ subclass-forget-test-3 class-usages ]
|
||||||
|
unit-test
|
||||||
|
|
||||||
[ f ] [ subclass-forget-test-1 tuple-class? ] unit-test
|
[ f ] [ subclass-forget-test-1 tuple-class? ] unit-test
|
||||||
[ f ] [ subclass-forget-test-2 tuple-class? ] unit-test
|
[ f ] [ subclass-forget-test-2 tuple-class? ] unit-test
|
||||||
[ subclass-forget-test-3 new ] must-fail
|
[ subclass-forget-test-3 new ] must-fail
|
||||||
|
|
|
@ -226,12 +226,6 @@ M: tuple-class reset-class
|
||||||
} reset-props
|
} reset-props
|
||||||
] bi ;
|
] bi ;
|
||||||
|
|
||||||
: reset-tuple-class ( class -- )
|
|
||||||
[ [ reset-class ] [ update-map- ] bi ] each-subclass ;
|
|
||||||
|
|
||||||
M: tuple-class forget*
|
|
||||||
[ reset-tuple-class ] [ call-next-method ] bi ;
|
|
||||||
|
|
||||||
M: tuple-class rank-class drop 0 ;
|
M: tuple-class rank-class drop 0 ;
|
||||||
|
|
||||||
M: tuple clone
|
M: tuple clone
|
||||||
|
|
|
@ -83,7 +83,14 @@ SYMBOL: update-tuples-hook
|
||||||
call-recompile-hook
|
call-recompile-hook
|
||||||
call-update-tuples-hook
|
call-update-tuples-hook
|
||||||
dup [ drop compiled-crossref? ] assoc-contains? modify-code-heap
|
dup [ drop compiled-crossref? ] assoc-contains? modify-code-heap
|
||||||
updated-definitions notify-definition-observers ;
|
;
|
||||||
|
|
||||||
|
: with-nested-compilation-unit ( quot -- )
|
||||||
|
[
|
||||||
|
H{ } clone changed-definitions set
|
||||||
|
H{ } clone outdated-tuples set
|
||||||
|
[ finish-compilation-unit ] [ ] cleanup
|
||||||
|
] with-scope ; inline
|
||||||
|
|
||||||
: with-compilation-unit ( quot -- )
|
: with-compilation-unit ( quot -- )
|
||||||
[
|
[
|
||||||
|
@ -92,8 +99,11 @@ SYMBOL: update-tuples-hook
|
||||||
H{ } clone outdated-tuples set
|
H{ } clone outdated-tuples set
|
||||||
<definitions> new-definitions set
|
<definitions> new-definitions set
|
||||||
<definitions> old-definitions set
|
<definitions> old-definitions set
|
||||||
[ finish-compilation-unit ]
|
[
|
||||||
[ ] cleanup
|
finish-compilation-unit
|
||||||
|
updated-definitions
|
||||||
|
notify-definition-observers
|
||||||
|
] [ ] cleanup
|
||||||
] with-scope ; inline
|
] with-scope ; inline
|
||||||
|
|
||||||
: compile-call ( quot -- )
|
: compile-call ( quot -- )
|
||||||
|
|
|
@ -147,12 +147,16 @@ M: method-body forget*
|
||||||
[ implementors ] [ [ swap 2array ] curry ] bi map forget-all ;
|
[ implementors ] [ [ swap 2array ] curry ] bi map forget-all ;
|
||||||
|
|
||||||
M: class forget* ( class -- )
|
M: class forget* ( class -- )
|
||||||
{
|
[
|
||||||
|
class-usages [
|
||||||
|
drop
|
||||||
[ forget-methods ]
|
[ forget-methods ]
|
||||||
[ update-map- ]
|
[ update-map- ]
|
||||||
[ reset-class ]
|
[ reset-class ]
|
||||||
[ call-next-method ]
|
tri
|
||||||
} cleave ;
|
] assoc-each
|
||||||
|
]
|
||||||
|
[ call-next-method ] bi ;
|
||||||
|
|
||||||
M: assoc update-methods ( assoc -- )
|
M: assoc update-methods ( assoc -- )
|
||||||
implementors* [ make-generic ] each ;
|
implementors* [ make-generic ] each ;
|
||||||
|
|
|
@ -461,10 +461,10 @@ must-fail-with
|
||||||
"methods" word-prop assoc-size
|
"methods" word-prop assoc-size
|
||||||
] unit-test
|
] unit-test
|
||||||
|
|
||||||
[ [ ] ] [
|
[ ] [
|
||||||
2 [
|
2 [
|
||||||
"IN: parser.tests DEFER: twice-fails FORGET: twice-fails MIXIN: twice-fails"
|
"IN: parser.tests DEFER: twice-fails FORGET: twice-fails MIXIN: twice-fails"
|
||||||
<string-reader> "twice-fails-test" parse-stream
|
<string-reader> "twice-fails-test" parse-stream drop
|
||||||
] times
|
] times
|
||||||
] unit-test
|
] unit-test
|
||||||
|
|
||||||
|
|
|
@ -357,10 +357,9 @@ M: staging-violation summary
|
||||||
"A parsing word cannot be used in the same file it is defined in." ;
|
"A parsing word cannot be used in the same file it is defined in." ;
|
||||||
|
|
||||||
: execute-parsing ( word -- )
|
: execute-parsing ( word -- )
|
||||||
new-definitions get [
|
[ changed-definitions get key? [ staging-violation ] when ]
|
||||||
dupd first key? [ staging-violation ] when
|
[ execute ]
|
||||||
] when*
|
bi ;
|
||||||
execute ;
|
|
||||||
|
|
||||||
: parse-step ( accum end -- accum ? )
|
: parse-step ( accum end -- accum ? )
|
||||||
scan-word {
|
scan-word {
|
||||||
|
|
|
@ -215,12 +215,6 @@ unit-test
|
||||||
3 V{ 1 2 3 4 5 6 } clone [ delete-nth ] keep
|
3 V{ 1 2 3 4 5 6 } clone [ delete-nth ] keep
|
||||||
] unit-test
|
] unit-test
|
||||||
|
|
||||||
[ V{ 1 2 3 } ]
|
|
||||||
[ 3 V{ 1 2 } clone [ adjoin ] keep ] unit-test
|
|
||||||
|
|
||||||
[ V{ 1 2 3 } ]
|
|
||||||
[ 3 V{ 1 3 2 } clone [ adjoin ] keep ] unit-test
|
|
||||||
|
|
||||||
! erg's random tester found this one
|
! erg's random tester found this one
|
||||||
[ SBUF" 12341234" ] [
|
[ SBUF" 12341234" ] [
|
||||||
9 <sbuf> dup "1234" swap push-all dup dup swap push-all
|
9 <sbuf> dup "1234" swap push-all dup dup swap push-all
|
||||||
|
|
|
@ -15,3 +15,9 @@ IN: sets.tests
|
||||||
|
|
||||||
[ V{ } ] [ { } { } union ] unit-test
|
[ V{ } ] [ { } { } union ] unit-test
|
||||||
[ V{ 1 2 3 4 } ] [ { 1 2 3 } { 2 3 4 } union ] unit-test
|
[ V{ 1 2 3 4 } ] [ { 1 2 3 } { 2 3 4 } union ] unit-test
|
||||||
|
|
||||||
|
[ V{ 1 2 3 } ]
|
||||||
|
[ 3 V{ 1 2 } clone [ adjoin ] keep ] unit-test
|
||||||
|
|
||||||
|
[ V{ 1 2 3 } ]
|
||||||
|
[ 3 V{ 1 3 2 } clone [ adjoin ] keep ] unit-test
|
||||||
|
|
|
@ -101,7 +101,7 @@ IN: bootstrap.syntax
|
||||||
|
|
||||||
"DEFER:" [
|
"DEFER:" [
|
||||||
scan in get create
|
scan in get create
|
||||||
dup old-definitions get first delete-at
|
dup old-definitions get [ delete-at ] with each
|
||||||
set-word
|
set-word
|
||||||
] define-syntax
|
] define-syntax
|
||||||
|
|
||||||
|
@ -189,8 +189,9 @@ IN: bootstrap.syntax
|
||||||
"MAIN:" [ scan-word in get vocab set-vocab-main ] define-syntax
|
"MAIN:" [ scan-word in get vocab set-vocab-main ] define-syntax
|
||||||
|
|
||||||
"<<" [
|
"<<" [
|
||||||
[ \ >> parse-until >quotation ] with-compilation-unit
|
[
|
||||||
call
|
\ >> parse-until >quotation
|
||||||
|
] with-nested-compilation-unit call
|
||||||
] define-syntax
|
] define-syntax
|
||||||
|
|
||||||
"call-next-method" [
|
"call-next-method" [
|
||||||
|
|
|
@ -175,7 +175,9 @@ PRIVATE>
|
||||||
: define-symbol ( word -- )
|
: define-symbol ( word -- )
|
||||||
dup [ ] curry define-inline ;
|
dup [ ] curry define-inline ;
|
||||||
|
|
||||||
: reset-word ( word -- )
|
GENERIC: reset-word ( word -- )
|
||||||
|
|
||||||
|
M: word reset-word
|
||||||
{
|
{
|
||||||
"unannotated-def"
|
"unannotated-def"
|
||||||
"parsing" "inline" "foldable" "flushable"
|
"parsing" "inline" "foldable" "flushable"
|
||||||
|
|
Loading…
Reference in New Issue