Skip to content

Error message on non-existent refer Var is not helpful #1231

Closed
@chrisrink10

Description

@chrisrink10

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'

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions