classes.tuple: Better error message for tuples that try to inherit from themselves. Add must-fail tests for tuples that try to inherit from themselves and for inheriting from a generic.

Fixes #412.
db4
Doug Coleman 2012-06-01 16:46:45 -07:00
parent 3c775f7bea
commit cee0b9e854
2 changed files with 9 additions and 2 deletions

View File

@ -833,3 +833,7 @@ DEFER: initial-slot
[ "IN: classes.tuple.tests TUPLE: initial-slot { x initial-class initial: 3 } ;" eval( -- ) ]
[ error>> T{ bad-initial-value f "x" 3 initial-class } = ] must-fail-with
[ "IN: classes.tuple.tests USE: math TUPLE: foo < foo ;" eval( -- ) ] [ error>> bad-superclass? ] must-fail-with
[ "IN: classes.tuple.tests USE: math TUPLE: foo < + ;" eval( -- ) ] [ error>> bad-superclass? ] must-fail-with

View File

@ -93,7 +93,7 @@ ERROR: bad-superclass class ;
] [ 2drop f ] if
] [ 2drop f ] if ; inline
GENERIC: final-class? ( class -- ? )
GENERIC: final-class? ( object -- ? )
M: tuple-class final-class? "final" word-prop ;
@ -101,6 +101,8 @@ M: builtin-class final-class? tuple eq? not ;
M: class final-class? drop t ;
M: object final-class? drop f ;
<PRIVATE
: tuple-predicate-quot/1 ( class -- quot )
@ -247,7 +249,8 @@ M: tuple-class update-class
bi-curry* bi and ;
: check-superclass ( superclass -- )
dup final-class? [ bad-superclass ] when drop ;
dup final-class? [ bad-superclass ] when
dup class? [ bad-superclass ] unless drop ;
GENERIC# (define-tuple-class) 2 ( class superclass slots -- )