summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2020-03-05 23:46:01 -0800
committerKaz Kylheku <kaz@kylheku.com>2020-03-05 23:46:01 -0800
commit35838a074d832a11b51a84be31c15602356c10b0 (patch)
tree027618c3947a46771416d43964ac3b7eafa4d17a
parent30660b162860f742a0ade2dc9dc017226eb7289f (diff)
downloadtxr-35838a074d832a11b51a84be31c15602356c10b0.tar.gz
txr-35838a074d832a11b51a84be31c15602356c10b0.tar.bz2
txr-35838a074d832a11b51a84be31c15602356c10b0.zip
tags: handle option struct slots with more care
* tags.tl (collect-tags): In proccessing a define-option-struct, don't record a tag for a long or short option that is nil. Each option definition defines only one slot. If both a long and short option are present (non-nil), then the long option names the slot.
-rwxr-xr-xtags.tl6
1 files changed, 4 insertions, 2 deletions
diff --git a/tags.tl b/tags.tl
index 3d6be813..075fc523 100755
--- a/tags.tl
+++ b/tags.tl
@@ -101,8 +101,10 @@
(let ((struct-name (cadr obj)))
(add (ntag struct-tag struct-name))
(each ((obj (cdddr obj)))
- (add (ntag slot-tag (car obj) struct-name))
- (add (ntag slot-tag (cadr obj) struct-name)))))
+ (tree-bind (short long . rest) obj
+ (cond
+ (long (add (ntag slot-tag long struct-name)))
+ (short (add (ntag slot-tag short struct-name))))))))
((defstruct)
(let ((struct-obj obj)
(struct-name (tree-case (cadr obj)