UIOP:DEFINE-PACKAGE signals a TYPE-ERROR when trying to IMPORT-FROM a non-existent package
On ASDF 3.3.4.7, I just attempted to evaluate this:
(uiop:define-package #:amb
(:use #:cl)
(:shadow #:require)
(:import-from #:alexandria
#:with-gensyms #:shuffle #:when-let #:define-constant)
(:export #:amb #:amb-failure #:amb-failure-stack #:+empty-stack+))
Without Alexandria loaded via ASDF. This results in a type error and an unfriendly error message:
The value of UIOP/PACKAGE::FROM-PACKAGE is COMMON-LISP:NIL, which is not of type COMMON-LISP:PACKAGE.
[Condition of type COMMON-LISP:SIMPLE-TYPE-ERROR]
Restarts:
0: [STORE-VALUE] Supply a new value for UIOP/PACKAGE::FROM-PACKAGE.
1: [ABORT] Abort compilation.
2: [*ABORT] Return to SLIME's top level.
3: [ABORT] abort thread (#<THREAD "worker" RUNNING {1010F1D1B3}>)
Backtrace:
0: (SB-KERNEL:CHECK-TYPE-ERROR UIOP/PACKAGE::FROM-PACKAGE COMMON-LISP:NIL COMMON-LISP:PACKAGE COMMON-LISP:NIL)
1: (UIOP/PACKAGE::ENSURE-IMPORT "WITH-GENSYMS" #<COMMON-LISP:PACKAGE "AMB"> #<unavailable argument> #<COMMON-LISP:HASH-TABLE :TEST COMMON-LISP:EQUAL :COUNT 1 {1010F915E3}> #<COMMON-LISP:HASH-TABLE :TEST ..
Locals:
IMPORTED = #<COMMON-LISP:HASH-TABLE :TEST COMMON-LISP:EQUAL :COUNT 0 {1010F916A3}>
NAME = "WITH-GENSYMS"
SHADOWED = #<COMMON-LISP:HASH-TABLE :TEST COMMON-LISP:EQUAL :COUNT 1 {1010F915E3}>
TO-PACKAGE = #<COMMON-LISP:PACKAGE "AMB">
2: (UIOP/PACKAGE:ENSURE-PACKAGE #:AMB :NICKNAMES COMMON-LISP:NIL :DOCUMENTATION COMMON-LISP:NIL :USE (#:CL) :SHADOW (#:REQUIRE) :SHADOWING-IMPORT-FROM COMMON-LISP:NIL :IMPORT-FROM ((#:ALEXANDRIA #:WITH-G..
Locals:
#:.DEFAULTING-TEMP. = COMMON-LISP:NIL
EXPORT = (#:AMB #:AMB-FAILURE #:AMB-FAILURE-STACK #:+EMPTY-STACK+)
EXPORTED = #<COMMON-LISP:HASH-TABLE :TEST COMMON-LISP:EQUAL :COUNT 4 {1010F91763}>
IMPORT-FROM = ((#:ALEXANDRIA #:WITH-GENSYMS #:SHUFFLE #:WHEN-LET #:DEFINE-CONSTANT))
IMPORTED = #<COMMON-LISP:HASH-TABLE :TEST COMMON-LISP:EQUAL :COUNT 0 {1010F916A3}>
INHERITED = #<COMMON-LISP:HASH-TABLE :TEST COMMON-LISP:EQUAL :COUNT 0 {1010F91823}>
INTERN = COMMON-LISP:NIL
LOCAL-NICKNAMES = COMMON-LISP:NIL
MIX = COMMON-LISP:NIL
MIX#1 = COMMON-LISP:NIL
NAME = #:AMB
NICKNAMES = COMMON-LISP:NIL
PACKAGE = #<COMMON-LISP:PACKAGE "AMB">
PP#2 = COMMON-LISP:NIL
RECYCLE = (#:AMB)
RECYCLE#1 = (#<COMMON-LISP:PACKAGE "AMB">)
REEXPORT = COMMON-LISP:NIL
SHADOW = (#:REQUIRE)
SHADOWED = #<COMMON-LISP:HASH-TABLE :TEST COMMON-LISP:EQUAL :COUNT 1 {1010F915E3}>
SHADOWING-IMPORT-FROM = COMMON-LISP:NIL
TO-DELETE = COMMON-LISP:NIL
UNINTERN = COMMON-LISP:NIL
USE = (#:CL)
USE#1 = (#<COMMON-LISP:PACKAGE "COMMON-LISP">)