\ tag [
drop fixnum 0 num-types get [a,b) <class/interval-info>
] "outputs" set-word-prop
+
+! Primitive resize operations
+
+: propagate-resize-fixed-length-sequence ( n-info in-info class -- out-info )
+ nip <sequence-info> ;
+
+{ { resize-array array }
+ { resize-byte-array byte-array }
+ { resize-string string } }
+[
+ [ propagate-resize-fixed-length-sequence ] curry
+ "outputs" set-word-prop
+] assoc-each
[ dup "foo" <array> drop ] final-info first
] unit-test
+{ t } [
+ [ resize-array length ] final-info first
+ array-capacity <class-info> =
+] unit-test
+
+{ 42 } [
+ [ 42 swap resize-array length ] final-literals first
+] unit-test
+
! Byte arrays
{ V{ 3 } } [
[ 3 <byte-array> length ] final-literals
] unit-test
{ t } [
- [ dupd resize-byte-array drop ] final-info first
- integer-array-capacity <class-info> =
+ [ resize-byte-array length ] final-info first
+ array-capacity <class-info> =
+] unit-test
+
+{ 43 } [
+ [ 43 swap resize-byte-array length ] final-literals first
] unit-test
! Strings
[ 3 f <string> length ] final-literals
] unit-test
+{ t } [
+ [ resize-string length ] final-info first
+ array-capacity <class-info> =
+] unit-test
+
+{ V{ 44 } } [
+ [ 44 swap resize-string length ] final-literals
+] unit-test
+
{ V{ t } } [
[ { string } declare string? ] final-classes
] unit-test