Skip to content

Commit 2d91426

Browse files
authored
Add :IMPORT-FROM option to DEFPACKAGE (#2335)
* Add :IMPORT-FROM option to DEFPACKAGE * Fix a couple of variable reference typos. Change the FILETYPE to be :FAKE-COMPILE-FILE (per #2336) * Fix error of missing arg in call to IMPORT.
1 parent aae53a7 commit 2d91426

File tree

2 files changed

+82
-24
lines changed

2 files changed

+82
-24
lines changed

sources/LLPACKAGE

Lines changed: 82 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
(DEFINE-FILE-INFO PACKAGE "LISP" READTABLE "XCL" BASE 10)
22

3-
(IL:FILECREATED " 5-Sep-2024 17:42:20" IL:|{DSK}<home>matt>Interlisp>medley>sources>LLPACKAGE.;3| 87515
3+
(IL:FILECREATED " 2-Nov-2025 19:49:02" IL:|{DSK}<home>matt>Interlisp>medley>sources>LLPACKAGE.;2| 92970
44

55
:EDIT-BY "mth"
66

77
:CHANGES-TO (IL:FNS XCL:DEFPACKAGE)
88

9-
:PREVIOUS-DATE " 4-Sep-2024 13:17:23" IL:|{DSK}<home>matt>Interlisp>medley>sources>LLPACKAGE.;2|
9+
:PREVIOUS-DATE "30-Oct-2025 14:25:43" IL:|{DSK}<home>matt>Interlisp>medley>sources>LLPACKAGE.;1|
1010
)
1111

1212

@@ -524,7 +524,9 @@
524524
(IL:DEFINEQ
525525

526526
(XCL:DEFPACKAGE
527-
(IL:NLAMBDA IL:ARGS (IL:* IL:\; "Edited 4-Sep-2024 13:17 by mth")
527+
(IL:NLAMBDA IL:ARGS (IL:* IL:\; "Edited 2-Nov-2025 19:48 by mth")
528+
(IL:* IL:\; "Edited 30-Oct-2025 11:34 by mth")
529+
(IL:* IL:\; "Edited 4-Sep-2024 13:17 by mth")
528530
(IL:* IL:\; "Edited 2-Dec-87 10:39 by raf")
529531
(IL:SETQ IL:ARGS (XCL:REMOVE-COMMENTS IL:ARGS))
530532
(LET
@@ -571,6 +573,30 @@
571573
IL:SYMBOL)))
572574
PACKAGE))
573575
(:IMPORT (IMPORT VALUES PACKAGE))
576+
(:IMPORT-FROM (LET* ((PACKAGE-NAME (POP VALUES))
577+
(XCL::PACKAGE-FROM (FIND-PACKAGE PACKAGE-NAME)))
578+
(IMPORT (IL:MAPCAR VALUES
579+
(IL:FUNCTION (IL:LAMBDA (XCL::SN)
580+
(COND
581+
((IL:LITATOM XCL::SN)
582+
(SETQ XCL::SN
583+
(SYMBOL-NAME
584+
XCL::SN))))
585+
(COND
586+
((IL:STRINGP XCL::SN)
587+
(OR (FIND-SYMBOL
588+
XCL::SN
589+
XCL::PACKAGE-FROM
590+
)
591+
(ERROR
592+
"Symbol ~S not found in package ~S in :import-from option of defpackage"
593+
XCL::SN
594+
PACKAGE-NAME
595+
)))
596+
(T (IL:ERROR
597+
"Bad object in :import-from option of defpackage "
598+
XCL::SN))))))
599+
PACKAGE)))
574600
((:SHADOW :SHADOWING-IMPORT)
575601
(LET ((IL:SYMBOLS-TO-SHADOW (IL:MAPCONC
576602
VALUES
@@ -620,7 +646,8 @@
620646
((:PREFIX-NAME :INTERNAL-SYMBOLS :EXTERNAL-SYMBOLS
621647
:EXTERNAL-ONLY)
622648
(LIST IL:KEY (CAR VALUES)))
623-
((:SHADOW :EXPORT :IMPORT :SHADOWING-IMPORT)
649+
((:SHADOW :EXPORT :IMPORT :IMPORT-FROM
650+
:SHADOWING-IMPORT)
624651
(IL:SETQ IL:POST-MAKE-FORMS
625652
(CONS (CONS IL:KEY VALUES)
626653
IL:POST-MAKE-FORMS))
@@ -648,6 +675,37 @@
648675
PACKAGE))
649676
(:IMPORT (IMPORT (CDR IL:FORM)
650677
PACKAGE))
678+
(:IMPORT-FROM (LET* ((PACKAGE-NAME (CADR IL:FORM))
679+
(XCL::PACKAGE-FROM (FIND-PACKAGE PACKAGE-NAME)))
680+
(IMPORT (IL:MAPCAR (CDDR IL:FORM)
681+
(IL:FUNCTION (IL:LAMBDA (XCL::SN)
682+
(COND
683+
((IL:LITATOM
684+
XCL::SN)
685+
(SETQ
686+
XCL::SN
687+
(SYMBOL-NAME
688+
XCL::SN))))
689+
(COND
690+
((IL:STRINGP
691+
XCL::SN)
692+
(OR
693+
(FIND-SYMBOL
694+
XCL::SN
695+
XCL::PACKAGE-FROM
696+
)
697+
(ERROR
698+
"Symbol ~S not found in package ~S in :import-from option of defpackage"
699+
XCL::SN
700+
701+
PACKAGE-NAME
702+
)))
703+
(T (IL:ERROR
704+
705+
"Bad object in :import-from option of defpackage "
706+
XCL::SN)))))
707+
)
708+
PACKAGE)))
651709
(:SHADOWING-IMPORT
652710
(SHADOWING-IMPORT (CDR IL:FORM)
653711
PACKAGE))
@@ -1663,7 +1721,7 @@
16631721
(IL:* IL:|;;| "Proper compiler, readtable and package environment")
16641722

16651723

1666-
(IL:PUTPROPS IL:LLPACKAGE IL:FILETYPE COMPILE-FILE)
1724+
(IL:PUTPROPS IL:LLPACKAGE IL:FILETYPE :FAKE-COMPILE-FILE)
16671725

16681726
(IL:PUTPROPS IL:LLPACKAGE IL:MAKEFILE-ENVIRONMENT (:READTABLE "XCL" :PACKAGE "LISP"))
16691727
(IL:DECLARE\: IL:DONTEVAL@LOAD IL:DOEVAL@COMPILE IL:DONTCOPY IL:COMPILERVARS
@@ -1691,23 +1749,23 @@ IL:\\PKG-FIND-FREE-PACKAGE-INDEX 17838 . 18248)) (18305 18451 (IL:SETF-SYMBOL-PA
16911749
IL:ENTRY-HASH 20528 . 20919)) (20968 21314 (IL:COUNT-PACKAGE-HASHTABLE 20968 . 21314)) (21316 21488 (
16921750
IL:INTERNAL-SYMBOL-COUNT 21316 . 21488)) (21490 21608 (IL:EXTERNAL-SYMBOL-COUNT 21490 . 21608)) (21610
16931751
22766 (IL:ENTER-NEW-NICKNAMES 21610 . 22766)) (22768 23194 (IL:MAKE-PRIME-HASHTABLE-SIZE 22768 .
1694-
23194)) (23196 24845 (MAKE-PACKAGE 23196 . 24845)) (24846 34317 (XCL:DEFPACKAGE 24859 . 34315)) (34366
1695-
34588 (FIND-PACKAGE 34366 . 34588)) (34590 37951 (USE-PACKAGE 34590 . 37951)) (37953 38433 (
1696-
IN-PACKAGE 37953 . 38433)) (38435 38709 (XCL:PKG-GOTO 38435 . 38709)) (38711 39811 (RENAME-PACKAGE
1697-
38711 . 39811)) (39813 41264 (XCL:DELETE-PACKAGE 39813 . 41264)) (41266 44212 (EXPORT 41266 . 44212))
1698-
(44214 45457 (UNEXPORT 44214 . 45457)) (45459 47103 (IMPORT 45459 . 47103)) (47105 48385 (
1699-
SHADOWING-IMPORT 47105 . 48385)) (48387 49441 (SHADOW 48387 . 49441)) (49443 50098 (UNUSE-PACKAGE
1700-
49443 . 50098)) (50162 50468 (LIST-ALL-PACKAGES 50162 . 50468)) (50525 54208 (IL:ADD-SYMBOL 50525 .
1701-
54208)) (54210 58263 (IL:WITH-SYMBOL 54210 . 58263)) (58265 59568 (IL:INTERN* 58265 . 59568)) (59570
1702-
65402 (IL:FIND-SYMBOL* 59570 . 65402)) (65404 66855 (INTERN 65404 . 66855)) (66857 67435 (FIND-SYMBOL
1703-
66857 . 67435)) (67493 68389 (IL:NUKE-SYMBOL 67493 . 68389)) (68391 70505 (UNINTERN 68391 . 70505)) (
1704-
70507 71650 (IL:MOBY-UNINTERN 70507 . 71650)) (71709 71781 (IL:\\INDEXATOMPNAME 71709 . 71781)) (71893
1705-
72040 (IL:MAKE-DO-SYMBOLS-VARS 71893 . 72040)) (72042 73497 (IL:MAKE-DO-SYMBOLS-CODE 72042 . 73497))
1706-
(73501 74279 (DO-EXTERNAL-SYMBOLS 73501 . 74279)) (74281 75627 (XCL:DO-LOCAL-SYMBOLS 74281 . 75627)) (
1707-
75629 76745 (XCL:DO-INTERNAL-SYMBOLS 75629 . 76745)) (76747 79045 (DO-SYMBOLS 76747 . 79045)) (79047
1708-
80729 (DO-ALL-SYMBOLS 79047 . 80729)) (80797 81322 (FIND-ALL-SYMBOLS 80797 . 81322)) (81324 81603 (
1709-
IL:BRIEFLY-DESCRIBE-SYMBOL 81324 . 81603)) (81605 83119 (APROPOS 81605 . 83119)) (83121 84688 (
1710-
APROPOS-LIST 83121 . 84688)) (84792 86319 (IL:FIND-EXTERNAL-SYMBOL 84792 . 86319)) (86321 86841 (
1711-
IL:FIND-EXACT-SYMBOL 86321 . 86841)) (86843 86923 (IL:PACKAGE-NAME-AS-SYMBOL 86843 . 86923)) (86925
1712-
87074 (IL:\\FIND.PACKAGE.INTERNAL 86925 . 87074)))))
1752+
23194)) (23196 24845 (MAKE-PACKAGE 23196 . 24845)) (24846 39766 (XCL:DEFPACKAGE 24859 . 39764)) (39815
1753+
40037 (FIND-PACKAGE 39815 . 40037)) (40039 43400 (USE-PACKAGE 40039 . 43400)) (43402 43882 (
1754+
IN-PACKAGE 43402 . 43882)) (43884 44158 (XCL:PKG-GOTO 43884 . 44158)) (44160 45260 (RENAME-PACKAGE
1755+
44160 . 45260)) (45262 46713 (XCL:DELETE-PACKAGE 45262 . 46713)) (46715 49661 (EXPORT 46715 . 49661))
1756+
(49663 50906 (UNEXPORT 49663 . 50906)) (50908 52552 (IMPORT 50908 . 52552)) (52554 53834 (
1757+
SHADOWING-IMPORT 52554 . 53834)) (53836 54890 (SHADOW 53836 . 54890)) (54892 55547 (UNUSE-PACKAGE
1758+
54892 . 55547)) (55611 55917 (LIST-ALL-PACKAGES 55611 . 55917)) (55974 59657 (IL:ADD-SYMBOL 55974 .
1759+
59657)) (59659 63712 (IL:WITH-SYMBOL 59659 . 63712)) (63714 65017 (IL:INTERN* 63714 . 65017)) (65019
1760+
70851 (IL:FIND-SYMBOL* 65019 . 70851)) (70853 72304 (INTERN 70853 . 72304)) (72306 72884 (FIND-SYMBOL
1761+
72306 . 72884)) (72942 73838 (IL:NUKE-SYMBOL 72942 . 73838)) (73840 75954 (UNINTERN 73840 . 75954)) (
1762+
75956 77099 (IL:MOBY-UNINTERN 75956 . 77099)) (77158 77230 (IL:\\INDEXATOMPNAME 77158 . 77230)) (77342
1763+
77489 (IL:MAKE-DO-SYMBOLS-VARS 77342 . 77489)) (77491 78946 (IL:MAKE-DO-SYMBOLS-CODE 77491 . 78946))
1764+
(78950 79728 (DO-EXTERNAL-SYMBOLS 78950 . 79728)) (79730 81076 (XCL:DO-LOCAL-SYMBOLS 79730 . 81076)) (
1765+
81078 82194 (XCL:DO-INTERNAL-SYMBOLS 81078 . 82194)) (82196 84494 (DO-SYMBOLS 82196 . 84494)) (84496
1766+
86178 (DO-ALL-SYMBOLS 84496 . 86178)) (86246 86771 (FIND-ALL-SYMBOLS 86246 . 86771)) (86773 87052 (
1767+
IL:BRIEFLY-DESCRIBE-SYMBOL 86773 . 87052)) (87054 88568 (APROPOS 87054 . 88568)) (88570 90137 (
1768+
APROPOS-LIST 88570 . 90137)) (90241 91768 (IL:FIND-EXTERNAL-SYMBOL 90241 . 91768)) (91770 92290 (
1769+
IL:FIND-EXACT-SYMBOL 91770 . 92290)) (92292 92372 (IL:PACKAGE-NAME-AS-SYMBOL 92292 . 92372)) (92374
1770+
92523 (IL:\\FIND.PACKAGE.INTERNAL 92374 . 92523)))))
17131771
IL:STOP

sources/LLPACKAGE.LCOM

888 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)