━━━━━━━━━━━━━━━━━━━━━━━━ PLN CDR DRAFT: ISSUE 5 Gleefre ━━━━━━━━━━━━━━━━━━━━━━━━ 1 Issue 5 (Local nickname shadowing package's own name) ═══════════════════════════════════════════════════════ 1.1 Description ─────────────── It is not clear whether it should be allowed to define a /local nickname/ that shadows the /name/ or one of the /global nicknames/ of the package that it is defined in. 1.2 Examples ──────────── ┌──── │ (defpackage #:foo │ (:use) │ (:nicknames #:bar) │ (:local-nicknames (#:foo #:cl) │ (#:bar #:cl))) │ ; => continuable error (sbcl, ccl, abcl) │ ; => error (lispworks) │ ; => ok (ecl, acl, clasp) └──── 1.3 Current behavior ──────────────────── sbcl, ccl, abcl: A correctable error is signaled by `defpackage'. lispworks: An error is signaled by `defpackage'. A correctable error is signaled by `add-package-local-nickname'. ecl, acl, clasp: No errors are signaled. 1.4 Proposal ALLOW-WITH-STYLE-WARNING ───────────────────────────────────── It should be allowed to use the name or one of the global nicknames of the package as a local nickname, but a style warning might be issued. 1.4.1 Rationale ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ Such local nicknames are not likely to break anything. Even though they can be a bit confusing, this alone does not warrant an error to be signaled. Moreover, on all implementations it is possible to obtain such nicknames, even if on some of them invoking the `continue' restart is required. This suggests that cost of adoption is very low. 1.5 Proposal DISALLOW-WITH-CORRECTABLE-ERROR ──────────────────────────────────────────── Attemts to create such a nickname should result in a correctable error being signaled. The `continue' restart can be used to create the nickname anyway.