jakepearson/quickie

Cryptic ClassCastException

Closed this issue · 1 comments

$ lein test

lein test launchpad.core-test

Ran 1 tests containing 80 assertions.
0 failures, 0 errors.

$ lein quickie
:reloading (midi #error {
 :cause clojure.lang.Cons cannot be cast to clojure.lang.Symbol
 :via
 [{:type java.lang.ClassCastException
   :message clojure.lang.Cons cannot be cast to clojure.lang.Symbol
   :at [clojure.core$find_ns invoke core.clj 3972]}]
 :trace
 [[clojure.core$find_ns invoke core.clj 3972]
  [clojure.tools.namespace.repl$load_disabled_QMARK_ invoke repl.clj 32]
  [clojure.core$complement$fn__4380 invoke core.clj 1376]
  [clojure.core$filter$fn__4580 invoke core.clj 2690]
  [clojure.lang.LazySeq sval LazySeq.java 40]
  [clojure.lang.LazySeq seq LazySeq.java 49]
  [clojure.lang.Cons next Cons.java 39]
  [clojure.lang.RT next RT.java 674]
  [clojure.core$next__4112 invoke core.clj 64]
  [clojure.core$nthnext invoke core.clj 3038]
  [clojure.core$print_sequential invoke core_print.clj 58]
  [clojure.core$fn__5839 invoke core_print.clj 155]
  [clojure.lang.MultiFn invoke MultiFn.java 233]
  [clojure.core$pr_on invoke core.clj 3548]
  [clojure.core$pr invoke core.clj 3560]
  [clojure.lang.AFn applyToHelper AFn.java 154]
  [clojure.lang.RestFn applyTo RestFn.java 132]
  [clojure.core$apply invoke core.clj 630]
  [clojure.core$pr doInvoke core.clj 3566]
  [clojure.lang.RestFn applyTo RestFn.java 139]
  [clojure.core$apply invoke core.clj 630]
  [clojure.core$prn doInvoke core.clj 3593]
  [clojure.lang.RestFn invoke RestFn.java 421]
  [clojure.tools.namespace.repl$print_pending_reloads invoke repl.clj 29]
  [clojure.tools.namespace.repl$do_refresh invoke repl.clj 93]
  [clojure.tools.namespace.repl$refresh doInvoke repl.clj 145]
  [clojure.lang.RestFn invoke RestFn.java 397]
  [quickie.autotest$reload invoke autotest.clj 9]
  [quickie.autotest$run invoke autotest.clj 52]
  [user$eval875 invoke form-init989273796590312084.clj 1]
  [clojure.lang.Compiler eval Compiler.java 6782]
  [clojure.lang.Compiler eval Compiler.java 6772]
  [clojure.lang.Compiler load Compiler.java 7227]
  [clojure.lang.Compiler loadFile Compiler.java 7165]
  [clojure.main$load_script invoke main.clj 275]
  [clojure.main$init_opt invoke main.clj 280]
  [clojure.main$initialize invoke main.clj 308]
  [clojure.main$null_opt invoke main.clj 343]
  [clojure.main$main doInvoke main.clj 421]
  [clojure.lang.RestFn invoke RestFn.java 421]
  [clojure.lang.Var invoke Var.java 383]
  [clojure.lang.AFn applyToHelper AFn.java 156]
  [clojure.lang.Var applyTo Var.java 700]
  [clojure.main main main.java 37]]}

Here's the ns declaration from src/midi.clj:

(ns midi
  (:import (javax.sound.midi MidiSystem
                             ShortMessage
                             SysexMessage
                             MidiUnavailableException)))

And here's the top of my test file:

(ns launchpad.core-test
  (:require [clojure.test :refer :all]
            [launchpad.core :as lp]))

It's possible I'm doing something wrong, I'm a clojure n00b. But AFAICT I haven't done anything bad. As you can see lein test works ok.

nvm, it turned out to be a cruft file with bad namespace syntax, which quickie was evaluating but me and lein test were not.