]> git.eshelyaron.com Git - emacs.git/commitdiff
Fixing 'export'
authorGerd Möllmann <gerd@gnu.org>
Tue, 8 Aug 2023 06:15:59 +0000 (08:15 +0200)
committerGerd Möllmann <gerd@gnu.org>
Tue, 8 Aug 2023 13:42:31 +0000 (15:42 +0200)
* lisp/emacs-lisp/pkg.el (export): Add inherited symbols to package.
* lisp/emacs-lisp/pkg.el (pkg-defpackage): Fix a typo.
* src/pkg.c (pkg_set_status): Use pkg_error instead of eassert.

lisp/emacs-lisp/pkg.el
src/pkg.c

index d56a034eb6576e36f97429f9e336c9b20093b537..5083a05658547150c4e4d2835531bf3022433597 100644 (file)
@@ -487,7 +487,9 @@ Value is the renamed package object."
 
     ;; And now, three pages later, we export the suckers.
     (dolist (sym syms)
-      (package-%set-status sym package :external))
+      (if (eq (symbol-package sym) package)
+          (package-%set-status sym package :external)
+        (puthash sym :external (package-%symbols package))))
     t))
 
 
@@ -609,7 +611,7 @@ Value is t."
       (let ((other-package (pkg--package-or-lose (car imports-from))))
         (dolist (sym-name (cdr imports-from))
           (import (list (pkg--ensure-symbol sym-name other-package))
-                  gpackage))))
+                  package))))
 
     ;; Exports.
     (let ((old-exports nil)
index 7f78c61cf322bc4380d9b6f43dce26f3482983fa..ceb339e28cf83166a7c68dde1eec2e43f5e283e7 100644 (file)
--- a/src/pkg.c
+++ b/src/pkg.c
@@ -479,12 +479,16 @@ pkg_set_status (Lisp_Object symbol, Lisp_Object package, Lisp_Object status)
 {
   CHECK_SYMBOL (symbol);
   CHECK_PACKAGE (package);
+
   if (!EQ (status, QCinternal) && !EQ (status, QCexternal))
     pkg_error ("Invalid symbol status %s", status);
 
   struct Lisp_Hash_Table *h = XHASH_TABLE (PACKAGE_SYMBOLS (package));
-  ptrdiff_t i = hash_lookup (h, SYMBOL_NAME (symbol), NULL);
-  eassert (i >= 0);
+  const ptrdiff_t i = hash_lookup (h, SYMBOL_NAME (symbol), NULL);
+  if (i < 0)
+    pkg_error ("Symbol '%s' is not an internal symbol in package '%s'",
+              SDATA (SYMBOL_NAME (symbol)),
+              SDATA (PACKAGE_NAMEX (package)));
   ASET (h->key_and_value, 2 * i + 1, status);
   return Qnil;
 }