googlecloud icon indicating copy to clipboard operation
googlecloud copied to clipboard

Use refer-clojure when overriding clojure.core fn names

Open echeran opened this issue 10 years ago • 1 comments

I'm getting warnings and a NullPointerExceptions during lein compile, when I include a require statement for the namespace googlecloud.bigquery.tables.

Based on this SO answer, my hunch is that it is related to having a fn that shares the same name as a fn in clojure.core.

If that indeed is the problem, then solution would be to put a (:refer-clojure :exclude [list get]) inside the ns form. There are a few other namespaces in googlecloud.bigquery.* that might need that same fix.

The warning looks like

WARNING: list already refers to: #'clojure.core/list in namespace: googlecloud.bigquery.tables, being replaced by: #'googlecloud.bigquery.tables/list

and the errorlooks like

java.lang.NullPointerException, compiling:(test.clj:1:1)
Exception in thread "main" java.lang.NullPointerException, compiling:(test.clj:1:1)
    at clojure.lang.Compiler$InvokeExpr.eval(Compiler.java:3558)
    at clojure.lang.Compiler.compile1(Compiler.java:7226)
    at clojure.lang.Compiler.compile1(Compiler.java:7216)
    at clojure.lang.Compiler.compile(Compiler.java:7292)
    at clojure.lang.RT.compile(RT.java:398)
    at clojure.lang.RT.load(RT.java:438)
    at clojure.lang.RT.load(RT.java:411)
    at clojure.core$load$fn__5066.invoke(core.clj:5641)
    at clojure.core$load.doInvoke(core.clj:5640)
    at clojure.lang.RestFn.invoke(RestFn.java:408)
    at clojure.core$load_one.invoke(core.clj:5446)
    at clojure.core$compile$fn__5071.invoke(core.clj:5652)
    at clojure.core$compile.invoke(core.clj:5651)
    at user$eval9$fn__18.invoke(form-init2665704991054119185.clj:1)
    at user$eval9.invoke(form-init2665704991054119185.clj:1)
    at clojure.lang.Compiler.eval(Compiler.java:6703)
    at clojure.lang.Compiler.eval(Compiler.java:6693)
    at clojure.lang.Compiler.load(Compiler.java:7130)
    at clojure.lang.Compiler.loadFile(Compiler.java:7086)
    at clojure.main$load_script.invoke(main.clj:274)
    at clojure.main$init_opt.invoke(main.clj:279)
    at clojure.main$initialize.invoke(main.clj:307)
    at clojure.main$null_opt.invoke(main.clj:342)
    at clojure.main$main.doInvoke(main.clj:420)
    at clojure.lang.RestFn.invoke(RestFn.java:421)
    at clojure.lang.Var.invoke(Var.java:383)
    at clojure.lang.AFn.applyToHelper(AFn.java:156)
    at clojure.lang.Var.applyTo(Var.java:700)
    at clojure.main.main(main.java:37)

echeran avatar Dec 02 '15 01:12 echeran

+1 on adding (:refer-clojure :exclude [list get])

danoyoung avatar Sep 08 '16 14:09 danoyoung