ref: c37206a50fffdbe6e4efc37e75dfaa47f3da59af
parent: 611771698871131b70da808cd7359dc2c923d53f
author: Sigrid Solveig Haflínudóttir <sigrid@ftrv.se>
date: Sun Apr 13 23:46:53 EDT 2025
defstruct: fix another "isvec" issue
--- a/boot/sl.boot
+++ b/boot/sl.boot
@@ -78,7 +78,7 @@
#fn(get) *properties* :kind *doc-extra* filter #fn("n10<20Q:" #(:doc-fmt))
#fn("n10<20Q:" #(:doc-see)) princ foldl #fn("n20=161:") newline "See also:" #fn("n1A<0=700=21522263:" #(getprop
*formals-list* " ")) "Members:" #fn("n1A<070021522263:" #(getprop *formals-list* " ")) void
- "no help for " #fn(str) " " "" " (undefined)")) defstruct #fn("O10005000*///W1000J7021?14W2000J60q?24W3000J60D?34W4000J60q?44W5000J60D?54z6IIb;228;230>1_5142224?<5147586518=<8==268?5127288?528<8?51121Q85;3E0485DC<02902:52@408583;3\\0483H;3M0483DQ;3:04292;052;J504838BP;J5048382;J704171Q;3404084;J:042<02=52I222>8C18F8E848508?>8?H5148>3G07?02@8>2A8HPe15252@30q42B2Ce18D3\x9902D8D2Ee22F2G2H2Ee22I2J0e2e2e32K2L2I8Fe2e22M2N2EEe32I0e2e3e32O2P2Ee22Q360K@30E8C3;0r28@i2@408@Me3e4e3@30qe18E3\xae08C3t02C2D8E2B1e12I2Re2e12I0e2e12S7T2Uq8A535154e32V2I0e22I2We28E<e4e3@d02D8E8F3K02B2Xe12I8Fe2e12S8A5153@@02B2Xe12S8A5152e3@30qe12S7Y2Z8;8B8A8G8C8D8F0>88@525164:" #(#(:constructor
+ "no help for " #fn(str) " " "" " (undefined)")) defstruct #fn("O10005000*///W1000J7021?14W2000J60q?24W3000J60D?34W4000J60q?44W5000J60D?54z6IIb;228;230>1_5142224?<5147586518=<8==268?5127288?528<8?51121Q85;3E0485DC<02902:52@408583;3\\0483H;3M0483DQ;3:04292;052;J504838BP;J5048382;J5048C;3404084;J:042<02=52I222>8C18F8E848508?>8?H5148>3G07?02@8>2A8HPe15252@30q42B2Ce18D3\x9902D8D2Ee22F2G2H2Ee22I2J0e2e2e32K2L2I8Fe2e22M2N2EEe32I0e2e3e32O2P2Ee28F360K@30E8C3;0r28@i2@408@Me3e4e3@30qe18E3\xae08C3t02C2D8E2B1e12I2Qe2e12I0e2e12R7S2Tq8A535154e32U2I0e22I2Ve28E<e4e3@d02D8E8F3K02B2We12I8Fe2e12R8A5153@@02B2We12R8A5152e3@30qe12R7X2Y8;8B8A8G8C8D8F0>88@525164:" #(#(:constructor
2 :predicate 4 NIL NIL :type 0 :named 1 :conc-name 3 NIL NIL) vec #0#
#fn("n17005121220A>28552485:" #(cddr #fn(for-each)
#fn("n17002152340q:722324A<25F2605661:" #(member (:read-only)
@@ -89,7 +89,7 @@
#fn(map) #fn("n10B3500<:0:") #fn(sym) #\? "make-" #fn(str) "-" #fn("n12002152853=0220E8553@300853<02208552@40232486252627e1A360q@7028Fe292360q@802992e293360q@802:93e2943;02;94e2@30q95S;J80495DQS;39042<95e29697P578764:" #(#fn(str-find)
"\n\n" #fn(str-sub) "" #fn(str) "\n\n " #fn(append) defstruct :type :named :constructor
:conc-name :predicate) fmt) sym-set-doc #fn(append) :doc-fmt #fn(nconc) begin def s and equal?
- typeof quote struct or not eq? aref = length ,named %struct% #fn(copy-list) foldr #fn("n2202105201PP:" #(#fn(sym)
+ typeof quote struct or not eq? aref = length %struct% #fn(copy-list) foldr #fn("n2202105201PP:" #(#fn(sym)
":")) putprop constructor list map-int #fn("n1A<70F05251709205221938652943<0r20i2KM@30022872324Ie2e3953?0259523e2e2@30q262724e2282396360K@30E88Me3792:85523O02;2<2=2>86e22?2>97e22@e6e2@G02A2396360K@30E88M24e4e4e4:" #(list-ref
#fn(sym) def s v assert if void? aref member :read-only error str "slot " quote " in struct " " is :read-only"
aset!)))) bcode:ctable #fn("n1200Ke3:" #(aref)) with-output-to #fn("z12021e1220e2e1e12315163:" #(#fn(nconc)
--- a/src/system.sl
+++ b/src/system.sl
@@ -1144,7 +1144,7 @@
slots-kw))
constructor))] ; anything else means custom name and args
; should the struct name appear as the first element?
- [named (and (or named (eq? type vec)) name)]
+ [named (and (or named isvec) name)]
; accessor prefix
[access (or conc-name
(str name "-"))]}
@@ -1171,9 +1171,9 @@
,(when is? `(def (,is? s)
(and [equal? (typeof s) '(struct ,name)]
[or (not ',named) (eq? (aref s 0) ',name)]
- [= (length s) ,(+ (if ',named 1 0) (if isvec
- (* 2 num-slots)
- num-slots))])))
+ [= (length s) ,(+ (if named 1 0) (if isvec
+ (* 2 num-slots)
+ num-slots))])))
; constructor
,(when constructor
(if isvec