Skip to content

Tab completion after typing a period in a namespace triggers an NPE #24

@venantius

Description

@venantius

Bit of an oddly specific bug, I know.

TL;DR - if I type clojure.co and then try to tab-complete, an NPE is triggered. Tab-completion works fine if I hit tab at cloj or at clojure.core/, but after that first period and before the slash I'll get NPE'd. I ran into this on a project and then was able to reproduce outside of a project context.

Now the expected behavior would be for tab completion to work the way it did when I hit tab at cloj, i.e. to show me the list of namespaces that are potential results for what I've typed so far.

Full command history and stacktrace:

▸ lein repl
nREPL server started on port 55883 on host 127.0.0.1 - nrepl://127.0.0.1:55883
REPL-y 0.3.7, nREPL 0.2.12
Clojure 1.8.0
Java HotSpot(TM) 64-Bit Server VM 9.0.1+11
    Docs: (doc function-name-here)
          (find-doc "part-of-name-here")
  Source: (source function-name-here)
 Javadoc: (javadoc java-object-or-class-here)
    Exit: Control+D or (exit) or (quit)
 Results: Stored in vars *1, *2, *3, an exception in *e

user=> clojure.corNullPointerException   complete.core/fn--632/iter--624--633/fn--634 (core.clj:66)


CompilerException java.lang.ClassNotFoundException: clojure.cor, compiling:(null:0:0)
user=> (pst)
clojure.lang.Compiler$CompilerException: java.lang.ClassNotFoundException: clojure.cor, compiling:(null:0:0)
                                Compiler.java:6688 clojure.lang.Compiler.analyze
                                Compiler.java:6625 clojure.lang.Compiler.analyze
                                Compiler.java:6931 clojure.lang.Compiler.eval
                                Compiler.java:6890 clojure.lang.Compiler.eval
                                     core.clj:3105 clojure.core/eval
                                     core.clj:3101 clojure.core/eval
                                      main.clj:240 clojure.main/repl[fn]
                                      main.clj:240 clojure.main/repl[fn]
                                      main.clj:258 clojure.main/repl[fn]
                                      main.clj:258 clojure.main/repl
                                      main.clj:174 clojure.main/repl
                                  RestFn.java:1523 clojure.lang.RestFn.invoke
                         interruptible_eval.clj:87 clojure.tools.nrepl.middleware.interruptible-eval/evaluate[fn]
                                      AFn.java:152 clojure.lang.AFn.applyToHelper
                                      AFn.java:144 clojure.lang.AFn.applyTo
                                      core.clj:646 clojure.core/apply
                                     core.clj:1881 clojure.core/with-bindings*
                                     core.clj:1881 clojure.core/with-bindings*
                                   RestFn.java:425 clojure.lang.RestFn.invoke
                         interruptible_eval.clj:85 clojure.tools.nrepl.middleware.interruptible-eval/evaluate
                         interruptible_eval.clj:55 clojure.tools.nrepl.middleware.interruptible-eval/evaluate
                        interruptible_eval.clj:224 clojure.tools.nrepl.middleware.interruptible-eval/interruptible-eval[fn]
                        interruptible_eval.clj:192 clojure.tools.nrepl.middleware.interruptible-eval/run-next[fn]
                                       AFn.java:22 clojure.lang.AFn.run
                      ThreadPoolExecutor.java:1167 java.util.concurrent.ThreadPoolExecutor.runWorker
                       ThreadPoolExecutor.java:641 java.util.concurrent.ThreadPoolExecutor$Worker.run
                                   Thread.java:844 java.lang.Thread.run
Caused by: java.lang.ClassNotFoundException: clojure.cor
                           URLClassLoader.java:466 java.net.URLClassLoader.findClass
                        DynamicClassLoader.java:69 clojure.lang.DynamicClassLoader.findClass
                              ClassLoader.java:563 java.lang.ClassLoader.loadClass
                        DynamicClassLoader.java:77 clojure.lang.DynamicClassLoader.loadClass
                              ClassLoader.java:496 java.lang.ClassLoader.loadClass
                                  (Unknown Source) java.lang.Class.forName0
                                    Class.java:375 java.lang.Class.forName
                                      RT.java:2168 clojure.lang.RT.classForName
                                      RT.java:2177 clojure.lang.RT.classForName
                                Compiler.java:7145 clojure.lang.Compiler.resolveIn
                                Compiler.java:7108 clojure.lang.Compiler.resolve
                                Compiler.java:7069 clojure.lang.Compiler.analyzeSymbol
                                Compiler.java:6648 clojure.lang.Compiler.analyze
nil

Originally reported as a Leiningen issue here: technomancy/leiningen#2380

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions