diff --git a/basis/constructors/constructors-tests.factor b/basis/constructors/constructors-tests.factor index bb63838f5d..ae7fd0409c 100644 --- a/basis/constructors/constructors-tests.factor +++ b/basis/constructors/constructors-tests.factor @@ -65,3 +65,15 @@ TUPLE: inherit2 < inherit1 a ; CONSTRUCTOR: inherit2 ( a -- obj ) ; [ T{ inherit2 f f 100 } ] [ 100 ] unit-test + + +TUPLE: inherit3 hp max-hp ; +TUPLE: inherit4 < inherit3 ; + +CONSTRUCTOR: inherit3 ( -- obj ) + dup max-hp>> >>hp ; + +AUTO-CONSTRUCTOR: inherit4 ( -- obj ) + 10 >>max-hp ; + +[ 10 ] [ hp>> ] unit-test diff --git a/basis/constructors/constructors.factor b/basis/constructors/constructors.factor index 6fd6fa1906..a2c8d7637d 100644 --- a/basis/constructors/constructors.factor +++ b/basis/constructors/constructors.factor @@ -50,7 +50,7 @@ MACRO:: slots>constructor ( class slots -- quot ) :: define-auto-constructor ( constructor-word class effect def -- ) constructor-word class effect def (define-constructor) - class superclasses [ lookup-initializer ] map sift + class superclasses [ lookup-initializer ] map sift reverse '[ @ _ [ execute( obj -- obj ) ] each ] effect define-declared ; : scan-constructor ( -- class word )