Closed
Description
Attempting to refer
a non-existent Var from a namespace causes a very unhelpful exception to be thrown which doesn't indicate the actual source of the problem.
basilisp.user=> (require '[basilisp.set :refer [blap]])
Traceback (most recent call last):
File "/Users/christopher/Projects/basilisp/src/basilisp/cli.py", line 583, in repl
result = eval_str(lsrc, ctx, ns, eof)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/christopher/Projects/basilisp/src/basilisp/cli.py", line 54, in eval_str
last = compiler.compile_and_exec_form(form, ctx, ns)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/christopher/Projects/basilisp/src/basilisp/lang/compiler/__init__.py", line 194, in compile_and_exec_form
last = getattr(ns.module, final_wrapped_name)()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<REPL Input>", line 1, in __lisp_expr___4810
File "/Users/christopher/Projects/basilisp/src/basilisp/core.lpy", line 5220, in require
(doseq [libspec (map require-libspec libspecs)]
File "/Users/christopher/Projects/basilisp/src/basilisp/core.lpy", line 2519, in dorun
(defn dorun
File "/Users/christopher/Projects/basilisp/src/basilisp/core.lpy", line 2528, in dorun__arity1
(when (seq ptr)
^^^^^^^^^
File "/Users/christopher/.pyenv/versions/3.12.1/lib/python3.12/functools.py", line 909, in wrapper
return dispatch(args[0].__class__)(*args, **kw)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/christopher/Projects/basilisp/src/basilisp/lang/seq.py", line 270, in _to_seq_lazyseq
return o.seq()
^^^^^^^
File "/Users/christopher/Projects/basilisp/src/basilisp/lang/seq.py", line 173, in seq
self._compute_seq()
File "/Users/christopher/Projects/basilisp/src/basilisp/lang/seq.py", line 168, in _compute_seq
self._obj = gen()
^^^^^
File "/Users/christopher/Projects/basilisp/src/basilisp/core.lpy", line 5236, in ____require__for_3316_3331__lisp_fn_3332
(let [new-ns-interns (ns-interns new-ns)]
File "/Users/christopher/Projects/basilisp/src/basilisp/core.lpy", line 2519, in dorun
(defn dorun
File "/Users/christopher/Projects/basilisp/src/basilisp/core.lpy", line 2528, in dorun__arity1
(when (seq ptr)
^^^^^^^^^
File "/Users/christopher/.pyenv/versions/3.12.1/lib/python3.12/functools.py", line 909, in wrapper
return dispatch(args[0].__class__)(*args, **kw)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/christopher/Projects/basilisp/src/basilisp/lang/seq.py", line 270, in _to_seq_lazyseq
return o.seq()
^^^^^^^
File "/Users/christopher/Projects/basilisp/src/basilisp/lang/seq.py", line 173, in seq
self._compute_seq()
File "/Users/christopher/Projects/basilisp/src/basilisp/lang/seq.py", line 168, in _compute_seq
self._obj = gen()
^^^^^
File "/Users/christopher/Projects/basilisp/src/basilisp/core.lpy", line 5239, in ________require__for_3316_3331__lisp_fn_3332__for_3321_3348__lisp_fn_3349
(.add-refer current-ns var-sym var))))
^^^^^^^^^
File "/Users/christopher/Projects/basilisp/src/basilisp/lang/runtime.py", line 844, in add_refer
if not var.is_private:
^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'is_private'