mranderson icon indicating copy to clipboard operation
mranderson copied to clipboard

load statements aren't handled

Open expez opened this issue 3 years ago • 17 comments

I recently tried to inline tools.deps.alpha to get hotload-dependencies working again for cljr, but mranderson failed to consider these load statements in the middle of the file.

expez avatar Oct 27 '21 19:10 expez

From what I can tell this happens because tools.namespace only considers the ns form and doesn't register the dependency caused by the load statement.

Guess we could run our own pass over the file to look for load, require, use and import...

expez avatar Oct 27 '21 19:10 expez

:wave: @expez give above (branch handle-load-stmt) a try and let me know if it works

benedekfazekas avatar Nov 13 '21 18:11 benedekfazekas

also require/use/import etc is taken care of. what was missing is checking file path like references what load is using

benedekfazekas avatar Nov 17 '21 10:11 benedekfazekas

gentle bump @expez

benedekfazekas avatar Nov 20 '21 11:11 benedekfazekas

Got an error:

unzipping [ plexus-component-annotations  [ v2v1v0 ]]
  munge source files of plexus-component-annotations artifact on branch [] exposed false.
  munge source files of commons-compress artifact on branch [] exposed false.
  munge source files of commons-lang artifact on branch [] exposed false.
  munge source files of xz artifact on branch [] exposed false.
  munge source files of compliment artifact on branch [] exposed false.
Error encountered performing task 'inline-deps' with profile(s): 'base,system,provided,dev,1.10'
java.util.concurrent.ExecutionException: clojure.lang.ExceptionInfo: Invalid symbol: Error:. {:type :reader-exception, :ex-kind :reader-error}
	at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
	at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
	at clojure.core$deref_future.invokeStatic(core.clj:2300)
	at clojure.core$future_call$reify__8439.deref(core.clj:6974)
	at clojure.core$deref.invokeStatic(core.clj:2320)
	at clojure.core$pmap$step__8452$fn__8456.invoke(core.clj:7025)
	at clojure.lang.LazySeq.sval(LazySeq.java:42)
	at clojure.lang.LazySeq.seq(LazySeq.java:51)
	at clojure.lang.Cons.next(Cons.java:39)
	at clojure.lang.RT.next(RT.java:709)
	at clojure.core$next__5371.invokeStatic(core.clj:64)
	at clojure.core$dorun.invokeStatic(core.clj:3142)
	at clojure.core$doall.invokeStatic(core.clj:3148)
	at clojure.core$doall.invoke(core.clj:3148)
	at mranderson.move$replace_ns_symbol_in_source_files.invokeStatic(move.clj:303)
	at mranderson.move$replace_ns_symbol_in_source_files.invoke(move.clj:294)
	at mranderson.move$move_ns.invokeStatic(move.clj:318)
	at mranderson.move$move_ns.invoke(move.clj:305)
	at mranderson.core$update_artifact_BANG_.invokeStatic(core.clj:227)
	at mranderson.core$update_artifact_BANG_.invoke(core.clj:196)
	at mranderson.dependency.tree$walk_ordered_deps$fn__2194$fn__2199.invoke(tree.clj:83)
	at clojure.core$map$fn__5851.invoke(core.clj:2755)
	at clojure.lang.LazySeq.sval(LazySeq.java:42)
	at clojure.lang.LazySeq.seq(LazySeq.java:51)
	at clojure.lang.Cons.next(Cons.java:39)
	at clojure.lang.RT.next(RT.java:709)
	at clojure.core$next__5371.invokeStatic(core.clj:64)
	at clojure.core$dorun.invokeStatic(core.clj:3142)
	at clojure.core$dorun.invoke(core.clj:3133)
	at mranderson.dependency.tree$walk_ordered_deps$fn__2194.invoke(tree.clj:83)
	at mranderson.dependency.tree$walk_ordered_deps.invokeStatic(tree.clj:82)
	at mranderson.dependency.tree$walk_ordered_deps.invoke(tree.clj:73)
	at mranderson.core$mranderson_resolved_deps_BANG_.invokeStatic(core.clj:326)
	at mranderson.core$mranderson_resolved_deps_BANG_.invoke(core.clj:307)
	at mranderson.core$mranderson.invokeStatic(core.clj:357)
	at mranderson.core$mranderson.invoke(core.clj:333)
	at leiningen.inline_deps$inline_deps.invokeStatic(inline_deps.clj:65)
	at leiningen.inline_deps$inline_deps.doInvoke(inline_deps.clj:52)
	at clojure.lang.RestFn.invoke(RestFn.java:410)
	at clojure.lang.AFn.applyToHelper(AFn.java:154)
	at clojure.lang.RestFn.applyTo(RestFn.java:132)
	at clojure.lang.Var.applyTo(Var.java:705)
	at clojure.core$apply.invokeStatic(core.clj:667)
	at clojure.core$apply.invoke(core.clj:660)
	at leiningen.core.main$partial_task$fn__6592.doInvoke(main.clj:284)
	at clojure.lang.RestFn.invoke(RestFn.java:410)
	at clojure.lang.AFn.applyToHelper(AFn.java:154)
	at clojure.lang.RestFn.applyTo(RestFn.java:132)
	at clojure.lang.AFunction$1.doInvoke(AFunction.java:31)
	at clojure.lang.RestFn.applyTo(RestFn.java:137)
	at clojure.core$apply.invokeStatic(core.clj:667)
	at clojure.core$apply.invoke(core.clj:660)
	at leiningen.core.main$apply_task.invokeStatic(main.clj:334)
	at leiningen.core.main$apply_task.invoke(main.clj:320)
	at leiningen.with_profile$with_profiles_STAR_.invokeStatic(with_profile.clj:14)
	at leiningen.with_profile$with_profiles_STAR_.invoke(with_profile.clj:8)
	at leiningen.with_profile$apply_task_with_profiles.invokeStatic(with_profile.clj:53)
	at leiningen.with_profile$apply_task_with_profiles.invoke(with_profile.clj:45)
	at leiningen.with_profile$with_profile$fn__10482.invoke(with_profile.clj:85)
	at clojure.core$mapv$fn__8430.invoke(core.clj:6912)
	at clojure.core.protocols$fn__8144.invokeStatic(protocols.clj:168)
	at clojure.core.protocols$fn__8144.invoke(protocols.clj:124)
	at clojure.core.protocols$fn__8099$G__8094__8108.invoke(protocols.clj:19)
	at clojure.core.protocols$seq_reduce.invokeStatic(protocols.clj:31)
	at clojure.core.protocols$fn__8131.invokeStatic(protocols.clj:75)
	at clojure.core.protocols$fn__8131.invoke(protocols.clj:75)
	at clojure.core.protocols$fn__8073$G__8068__8086.invoke(protocols.clj:13)
	at clojure.core$reduce.invokeStatic(core.clj:6828)
	at clojure.core$mapv.invokeStatic(core.clj:6903)
	at clojure.core$mapv.invoke(core.clj:6903)
	at leiningen.with_profile$with_profile.invokeStatic(with_profile.clj:85)
	at leiningen.with_profile$with_profile.doInvoke(with_profile.clj:63)
	at clojure.lang.RestFn.invoke(RestFn.java:445)
	at clojure.lang.AFn.applyToHelper(AFn.java:160)
	at clojure.lang.RestFn.applyTo(RestFn.java:132)
	at clojure.lang.Var.applyTo(Var.java:705)
	at clojure.core$apply.invokeStatic(core.clj:667)
	at clojure.core$apply.invoke(core.clj:660)
	at leiningen.core.main$partial_task$fn__6592.doInvoke(main.clj:284)
	at clojure.lang.RestFn.applyTo(RestFn.java:139)
	at clojure.lang.AFunction$1.doInvoke(AFunction.java:31)
	at clojure.lang.RestFn.applyTo(RestFn.java:137)
	at clojure.core$apply.invokeStatic(core.clj:667)
	at clojure.core$apply.invoke(core.clj:660)
	at leiningen.core.main$apply_task.invokeStatic(main.clj:334)
	at leiningen.core.main$apply_task.invoke(main.clj:320)
	at leiningen.core.main$resolve_and_apply.invokeStatic(main.clj:343)
	at leiningen.core.main$resolve_and_apply.invoke(main.clj:336)
	at leiningen.core.main$_main$fn__6681.invoke(main.clj:452)
	at leiningen.core.main$_main.invokeStatic(main.clj:442)
	at leiningen.core.main$_main.doInvoke(main.clj:439)
	at clojure.lang.RestFn.applyTo(RestFn.java:137)
	at clojure.lang.Var.applyTo(Var.java:705)
	at clojure.core$apply.invokeStatic(core.clj:665)
	at clojure.main$main_opt.invokeStatic(main.clj:491)
	at clojure.main$main_opt.invoke(main.clj:487)
	at clojure.main$main.invokeStatic(main.clj:598)
	at clojure.main$main.doInvoke(main.clj:561)
	at clojure.lang.RestFn.applyTo(RestFn.java:137)
	at clojure.lang.Var.applyTo(Var.java:705)
	at clojure.main.main(main.java:37)
Caused by: clojure.lang.ExceptionInfo: Invalid symbol: Error:. {:type :reader-exception, :ex-kind :reader-error}
	at clojure.tools.reader.impl.errors$throw_ex.invokeStatic(errors.clj:34)
	at clojure.tools.reader.impl.errors$throw_ex.doInvoke(errors.clj:24)
	at clojure.lang.RestFn.invoke(RestFn.java:442)
	at clojure.tools.reader.impl.errors$reader_error.invokeStatic(errors.clj:40)
	at clojure.tools.reader.impl.errors$reader_error.doInvoke(errors.clj:36)
	at clojure.lang.RestFn.invoke(RestFn.java:516)
	at clojure.tools.reader.impl.errors$throw_invalid.invokeStatic(errors.clj:97)
	at clojure.tools.reader.impl.errors$throw_invalid.invoke(errors.clj:96)
	at clojure.tools.reader.edn$read_symbol.invokeStatic(edn.clj:262)
	at clojure.tools.reader.edn$read_symbol.invoke(edn.clj:249)
	at clojure.tools.reader.edn$read.invokeStatic(edn.clj:407)
	at clojure.tools.reader.edn$read.invoke(edn.clj:371)
	at clojure.tools.reader.edn$read.invokeStatic(edn.clj:392)
	at clojure.tools.reader.edn$read.invoke(edn.clj:371)
	at clojure.tools.reader.edn$read_string.invokeStatic(edn.clj:440)
	at clojure.tools.reader.edn$read_string.invoke(edn.clj:429)
	at clojure.tools.reader.edn$read_string.invokeStatic(edn.clj:437)
	at clojure.tools.reader.edn$read_string.invoke(edn.clj:429)
	at rewrite_clj.reader$string__GT_edn.invokeStatic(reader.cljc:109)
	at rewrite_clj.reader$string__GT_edn.invoke(reader.cljc:106)
	at rewrite_clj.parser.token$symbol_node.invokeStatic(token.cljc:34)
	at rewrite_clj.parser.token$symbol_node.invoke(token.cljc:23)
	at rewrite_clj.parser.token$parse_token.invokeStatic(token.cljc:47)
	at rewrite_clj.parser.token$parse_token.invoke(token.cljc:37)
	at rewrite_clj.parser.core$eval4078$fn__4079.invoke(core.cljc:74)
	at clojure.lang.MultiFn.invoke(MultiFn.java:229)
	at rewrite_clj.reader$read_with_meta.invokeStatic(reader.cljc:147)
	at rewrite_clj.reader$read_with_meta.invoke(reader.cljc:143)
	at rewrite_clj.parser.core$parse_next.invokeStatic(core.cljc:46)
	at rewrite_clj.parser.core$parse_next.invoke(core.cljc:44)
	at rewrite_clj.parser.core$parse_delim$fn__4070.invoke(core.cljc:54)
	at rewrite_clj.reader$read_repeatedly$fn__3108.invoke(reader.cljc:156)
	at clojure.core$repeatedly$fn__6448.invoke(core.clj:5149)
	at clojure.lang.LazySeq.sval(LazySeq.java:42)
	at clojure.lang.LazySeq.seq(LazySeq.java:51)
	at clojure.lang.RT.seq(RT.java:531)
	at clojure.core$seq__5387.invokeStatic(core.clj:137)
	at clojure.core$take_while$fn__5902.invoke(core.clj:2904)
	at clojure.lang.LazySeq.sval(LazySeq.java:42)
	at clojure.lang.LazySeq.seq(LazySeq.java:51)
	at clojure.lang.Cons.next(Cons.java:39)
	at clojure.lang.RT.next(RT.java:709)
	at clojure.core$next__5371.invokeStatic(core.clj:64)
	at clojure.core$dorun.invokeStatic(core.clj:3142)
	at clojure.core$doall.invokeStatic(core.clj:3148)
	at clojure.core$doall.invoke(core.clj:3148)
	at rewrite_clj.reader$read_repeatedly.invokeStatic(reader.cljc:158)
	at rewrite_clj.reader$read_repeatedly.invoke(reader.cljc:152)
	at rewrite_clj.parser.core$parse_delim.invokeStatic(core.cljc:55)
	at rewrite_clj.parser.core$parse_delim.invoke(core.cljc:50)
	at rewrite_clj.parser.core$eval4148$fn__4149.invoke(core.cljc:201)
	at clojure.lang.MultiFn.invoke(MultiFn.java:229)
	at rewrite_clj.reader$read_with_meta.invokeStatic(reader.cljc:147)
	at rewrite_clj.reader$read_with_meta.invoke(reader.cljc:143)
	at rewrite_clj.parser.core$parse_next.invokeStatic(core.cljc:46)
	at rewrite_clj.parser.core$parse_next.invoke(core.cljc:44)
	at rewrite_clj.reader$read_n.invokeStatic(reader.cljc:168)
	at rewrite_clj.reader$read_n.invoke(reader.cljc:160)
	at rewrite_clj.parser.core$parse_printables.invokeStatic(core.cljc:61)
	at rewrite_clj.parser.core$parse_printables.doInvoke(core.cljc:57)
	at clojure.lang.RestFn.invoke(RestFn.java:445)
	at rewrite_clj.parser.core$eval4110$fn__4111.invoke(core.cljc:118)
	at clojure.lang.MultiFn.invoke(MultiFn.java:229)
	at rewrite_clj.reader$read_with_meta.invokeStatic(reader.cljc:147)
	at rewrite_clj.reader$read_with_meta.invoke(reader.cljc:143)
	at rewrite_clj.parser.core$parse_next.invokeStatic(core.cljc:46)
	at rewrite_clj.parser.core$parse_next.invoke(core.cljc:44)
	at rewrite_clj.parser.core$parse_delim$fn__4070.invoke(core.cljc:54)
	at rewrite_clj.reader$read_repeatedly$fn__3108.invoke(reader.cljc:156)
	at clojure.core$repeatedly$fn__6448.invoke(core.clj:5149)
	at clojure.lang.LazySeq.sval(LazySeq.java:42)
	at clojure.lang.LazySeq.seq(LazySeq.java:51)
	at clojure.lang.RT.seq(RT.java:531)
	at clojure.core$seq__5387.invokeStatic(core.clj:137)
	at clojure.core$take_while$fn__5902.invoke(core.clj:2904)
	at clojure.lang.LazySeq.sval(LazySeq.java:42)
	at clojure.lang.LazySeq.seq(LazySeq.java:51)
	at clojure.lang.Cons.next(Cons.java:39)
	at clojure.lang.RT.next(RT.java:709)
	at clojure.core$next__5371.invokeStatic(core.clj:64)
	at clojure.core$dorun.invokeStatic(core.clj:3142)
	at clojure.core$doall.invokeStatic(core.clj:3148)
	at clojure.core$doall.invoke(core.clj:3148)
	at rewrite_clj.reader$read_repeatedly.invokeStatic(reader.cljc:158)
	at rewrite_clj.reader$read_repeatedly.invoke(reader.cljc:152)
	at rewrite_clj.parser.core$parse_delim.invokeStatic(core.cljc:55)
	at rewrite_clj.parser.core$parse_delim.invoke(core.cljc:50)
	at rewrite_clj.parser.core$eval4140$fn__4141.invoke(core.cljc:193)
	at clojure.lang.MultiFn.invoke(MultiFn.java:229)
	at rewrite_clj.reader$read_with_meta.invokeStatic(reader.cljc:147)
	at rewrite_clj.reader$read_with_meta.invoke(reader.cljc:143)
	at rewrite_clj.parser.core$parse_next.invokeStatic(core.cljc:46)
	at rewrite_clj.parser.core$parse_next.invoke(core.cljc:44)
	at rewrite_clj.parser$parse.invokeStatic(parser.cljc:20)
	at rewrite_clj.parser$parse.invoke(parser.cljc:17)
	at mranderson.move$split_ns_form_ns_body.invokeStatic(move.clj:139)
	at mranderson.move$split_ns_form_ns_body.invoke(move.clj:130)
	at mranderson.move$replace_ns_symbol.invokeStatic(move.clj:256)
	at mranderson.move$replace_ns_symbol.invoke(move.clj:247)
	at clojure.lang.AFn.applyToHelper(AFn.java:178)
	at clojure.lang.AFn.applyTo(AFn.java:144)
	at clojure.core$apply.invokeStatic(core.clj:667)
	at clojure.core$apply.invoke(core.clj:660)
	at mranderson.move$update_file.invokeStatic(move.clj:38)
	at mranderson.move$update_file.doInvoke(move.clj:32)
	at clojure.lang.RestFn.invoke(RestFn.java:566)
	at mranderson.move$replace_ns_symbol_in_source_files$fn__4897.invoke(move.clj:302)
	at clojure.core$pmap$fn__8447$fn__8448.invoke(core.clj:7022)
	at clojure.core$binding_conveyor_fn$fn__5739.invoke(core.clj:2030)
	at clojure.lang.AFn.call(AFn.java:18)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
	at java.base/java.lang.Thread.run(Thread.java:831)
make: *** [Makefile:10: .inline-deps] Error 1

expez avatar Nov 24 '21 15:11 expez

I added some debug info and here's the ns form of the file it choked on:

(ns ^{:author "Alex Taggart", :doc "Support for testing whether logging calls are made.

  Usage example:
    (require '[clojure.tools.logging :as log]
             '[clojure.tools.logging.test :refer [logged? with-log])

    (with-log
      (log/info "Hello World!")
      (log/error (Exception. "Did a thing") "Error: oops")
      (logged? 'user :info #"Hello")                           ; true
      (logged? 'user :error [Throwable #"thing"] #"Error:")    ; true
      (logged? 'user :debug "Hi"))                             ; false", :mranderson/inlined true} clojure.tools.logging.test
  (:import [clojure.lang Fn Keyword Namespace Symbol]
           java.util.Set
           java.util.regex.Pattern)
  (:require [clojure.tools.logging :refer [*logger-factory*]]
            [clojure.tools.logging.impl :as impl]))

This ns form is unreadable because the strings in the code example have lost their escape characters.

Here's the original as a reference:

(ns ^{:author "Alex Taggart"
      :doc
  "Support for testing whether logging calls are made.

  Usage example:
    (require '[clojure.tools.logging :as log]
             '[clojure.tools.logging.test :refer [logged? with-log])

    (with-log
      (log/info \"Hello World!\")
      (log/error (Exception. \"Did a thing\") \"Error: oops\")
      (logged? 'user :info #\"Hello\")                           ; true
      (logged? 'user :error [Throwable #\"thing\"] #\"Error:\")    ; true
      (logged? 'user :debug \"Hi\"))                             ; false"}
    clojure.tools.logging.test
  (:import [clojure.lang Fn Keyword Namespace Symbol]
           java.util.Set
           java.util.regex.Pattern)
  (:require [clojure.tools.logging :refer [*logger-factory*]]
            [clojure.tools.logging.impl :as impl]))

expez avatar Nov 24 '21 15:11 expez

hm.. I though rewrite-clj handled such strings but maybe not.. will check check this. that said this seems to be a different issue from the original,right? does this mean the load statements are now fine?

benedekfazekas avatar Nov 24 '21 15:11 benedekfazekas

It doesn't get to the load statements because it fails pretty quickly.

expez avatar Nov 24 '21 15:11 expez

bit confused here. how did you get to the original failure with the load statements then? you don't get this problem with the version of mranderson you used before reporting the original?

benedekfazekas avatar Nov 24 '21 15:11 benedekfazekas

unzipping [ orchard  [ v0v7v3 ]]
unzipping [ toolsdepsalpha  [ v0v12v1048 ]]
unzipping [ api  [ v0v8v524 ]]
unzipping [ dataxml  [ v0v2v0-alpha6 ]]
unzipping [ datacodec  [ v0v1v0 ]]
unzipping [ maven-core  [ v3v8v2 ]]
unzipping [ maven-plugin-api  [ v3v8v2 ]]
unzipping [ maven-resolver-provider  [ v3v8v2 ]]
unzipping [ maven-model-builder  [ v3v8v2 ]]
unzipping [ maven-artifact  [ v3v8v2 ]]
unzipping [ http-client  [ v0v1v106 ]]
unzipping [ coreasync  [ v1v3v622 ]]
unzipping [ toolsanalyzerjvm  [ v1v1v0 ]]
unzipping [ corememoize  [ v1v0v236 ]]
unzipping [ corecache  [ v1v0v207 ]]
unzipping [ guice  [ v4v2v2 ]]
unzipping [ guava  [ v25v1-android ]]
unzipping [ maven-settings-builder  [ v3v8v2 ]]
unzipping [ maven-builder-support  [ v3v8v2 ]]
unzipping [ maven-shared-utils  [ v3v3v4 ]]
unzipping [ commons-io  [ v2v6 ]]
unzipping [ datapriority-map  [ v1v0v0 ]]
unzipping [ maven-repository-metadata  [ v3v8v2 ]]
unzipping [ maven-resolver-impl  [ v1v6v3 ]]
unzipping [ maven-resolver-connector-basic  [ v1v6v3 ]]
unzipping [ maven-resolver-transport-http  [ v1v6v3 ]]
unzipping [ maven-resolver-util  [ v1v6v3 ]]
unzipping [ orgeclipsesisuplexus  [ v0v3v4 ]]
unzipping [ orgeclipsesisuinject  [ v0v3v4 ]]
unzipping [ maven-model  [ v3v8v2 ]]
unzipping [ maven-resolver-transport-file  [ v1v6v3 ]]
unzipping [ jcl-over-slfj  [ v1v7v30 ]]
unzipping [ slfj-api  [ v1v7v30 ]]
unzipping [ toolsgitlibs  [ v2v3v167 ]]
unzipping [ dynapath  [ v1v1v0 ]]
unzipping [ rewrite-clj  [ v1v0v699-alpha ]]
unzipping [ cljfmt  [ v0v8v0 ]]
unzipping [ toolsreader  [ v1v3v6 ]]
unzipping [ jetty-client  [ v9v4v36vv20210114 ]]
unzipping [ jetty-http  [ v9v4v36vv20210114 ]]
unzipping [ jetty-io  [ v9v4v36vv20210114 ]]
unzipping [ cdi-api  [ v1v0 ]]
unzipping [ httpclient  [ v4v5v12 ]]
unzipping [ plexus-interpolation  [ v1v25 ]]
unzipping [ plexus-sec-dispatcher  [ v1v4 ]]
unzipping [ plexus-classworlds  [ v2v6v0 ]]
unzipping [ jobjc-annotations  [ v1v1 ]]
unzipping [ maven-resolver-spi  [ v1v6v3 ]]
unzipping [ commons-codec  [ v1v11 ]]
unzipping [ toolsnamespace  [ v1v1v0 ]]
unzipping [ javaclasspath  [ v1v0v0 ]]
unzipping [ checker-compat-qual  [ v2v0v0 ]]
unzipping [ diffutils  [ v1v3v0 ]]
unzipping [ jsr-api  [ v1v0 ]]
unzipping [ aopalliance  [ v1v0 ]]
unzipping [ maven-resolver-api  [ v1v6v3 ]]
unzipping [ fs  [ v1v6v307 ]]
unzipping [ httpcore  [ v4v4v13 ]]
unzipping [ maven-settings  [ v3v8v2 ]]
unzipping [ asm  [ v5v2 ]]
unzipping [ http-kit  [ v2v5v3 ]]
unzipping [ plexus-utils  [ v3v2v1 ]]
unzipping [ version-clj  [ v1v0v0 ]]
unzipping [ jetty-util  [ v9v4v36vv20210114 ]]
unzipping [ animal-sniffer-annotations  [ v1v14 ]]
unzipping [ toolscli  [ v1v0v206 ]]
unzipping [ toolslogging  [ v1v1v0 ]]
unzipping [ toolsanalyzer  [ v1v0v0 ]]
unzipping [ datajson  [ v2v3v1 ]]
unzipping [ compliment  [ v0v3v12 ]]
unzipping [ xz  [ v1v8 ]]
unzipping [ commons-lang  [ v3v8v1 ]]
unzipping [ commons-compress  [ v1v20 ]]
unzipping [ plexus-component-annotations  [ v2v1v0 ]]
  munge source files of plexus-component-annotations artifact on branch [] exposed false.
  munge source files of commons-compress artifact on branch [] exposed false.
  munge source files of commons-lang artifact on branch [] exposed false.
  munge source files of xz artifact on branch [] exposed false.
  munge source files of compliment artifact on branch [] exposed false.
Failed to update file #object[java.io.File 0x442615b4 /home/lars/git/refactor-nrepl/target/srcdeps/clojure/tools/logging/test.clj] function #object[mranderson.move$replace_ns_symbol 0x1249354 mranderson.move$replace_ns_symbol@1249354] (compliment.core refactor-nrepl.inlined-deps.compliment.v0v3v12.compliment.core :mranderson/inlined ".clj" ".clj")
Error encountered performing task 'inline-deps' with profile(s): 'base,system,provided,dev,1.10'
java.util.concurrent.ExecutionException: clojure.lang.ExceptionInfo: Invalid symbol: Error:. {:type :reader-exception, :ex-kind :reader-error}
	at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
	at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
	at clojure.core$deref_future.invokeStatic(core.clj:2300)

Here's a bit more of the printout. As you can see it crashes before it reaches clojure.tools.deps which contained the problematic load statements.

expez avatar Nov 24 '21 15:11 expez

how did you get to clojure.tools.deps originally then? TOL maybe would worth to create a repro project with just clojure.tools.deps...

benedekfazekas avatar Nov 24 '21 15:11 benedekfazekas

how did you get to clojure.tools.deps originally then?

make install in the refactor-nrepl repo on the hotload-deps branch gave me the load error with version 0.5.3. This branch (that I installed as 0.5.4-SNAPSHOT with lein install) gave me the error above when I ran make install again.

expez avatar Nov 24 '21 16:11 expez

To repro the only dep you need is this one, from refactor-nrepl:

                 ^:inline-dep [org.clojure/tools.deps.alpha "0.12.1048"
                               :exclusions
                               [
                                com.cognitect.aws/s3
                                com.cognitect.aws/endpoints
                                javax.inject]]

It will cause this branch to fail.

tools.dep really puts mranderson through it's paces as it pulls in A LOT of deps :/

expez avatar Nov 24 '21 16:11 expez

thx for the repro snippet. haha that is good in a way ;)

benedekfazekas avatar Nov 24 '21 16:11 benedekfazekas

Here's an even better repro by modifying the new test you created for this branch:

(def tool-deps-alpha-example
  "(ns
  ^{:author \"Alex Taggart\"
    :doc
    \"Support for testing whether logging calls are made.

  Usage example:
    (require '[clojure.tools.logging :as log]
             '[clojure.tools.logging.test :refer [logged? with-log])

    (with-log
      (log/info \"Hello World!\")
      (log/error (Exception. \"Did a thing\") \"Error: oops\")
      (logged? 'user :info #\"Hello\")                           ; true
      (logged? 'user :error [Throwable #\"thing\"] #\"Error:\")    ; true
      (logged? 'user :debug \"Hi\"))                             ; false\"}

clojure.tools.deps.alpha)
   (load \"/clojure/tools/deps/alpha/extensions/maven\")")

expez avatar Nov 24 '21 16:11 expez

can't really reproduce this with above as dblquotes inside the doc string should be double escaped. not even sure that is possible so just put the above example in a file and that is processed without a problem -- see latest commit on https://github.com/benedekfazekas/mranderson/tree/handle-load-stmt branch.

the maybe offending file is in tools logging btw: https://github.com/clojure/tools.logging/blob/master/src/main/clojure/clojure/tools/logging/test.clj will have an other go and see if mranderson can inline tools logging

benedekfazekas avatar Dec 05 '21 11:12 benedekfazekas

mranderson does not seem to have a problem with tools logging. added it to mranderson.core-test/dependencies the test run fine:

lein test mranderson.core-test
retrieve dependencies and munge clojure source files
in RESOLVED-TREE mode, working on a resolved dependency tree
 [cljfmt "0.7.0"]
   [com.googlecode.java-diff-utils/diffutils "1.3.0"]
   [org.clojure/tools.cli "1.0.194"]
   [org.clojure/tools.reader "1.3.3"]
   [rewrite-clj "0.6.1"]
   [rewrite-cljs "0.4.5"]
 [org.clojure/data.xml "0.2.0-alpha6"]
   [org.clojure/data.codec "0.1.0"]
 [org.clojure/tools.logging "1.1.0"]
 [riddley "0.1.12"]
unzipping [ cljfmt  [ v0v7v0 ]]
unzipping [ rewrite-cljs  [ v0v4v5 ]]
unzipping [ dataxml  [ v0v2v0-alpha6 ]]
unzipping [ datacodec  [ v0v1v0 ]]
unzipping [ rewrite-clj  [ v0v6v1 ]]
unzipping [ toolsreader  [ v1v3v3 ]]
unzipping [ diffutils  [ v1v3v0 ]]
unzipping [ riddley  [ v0v1v12 ]]
  removing duplicated file with namespace mismatch: compiler.clj
  removing duplicated file with namespace mismatch: walk.clj
unzipping [ toolscli  [ v1v0v194 ]]
unzipping [ toolslogging  [ v1v1v0 ]]
  munge source files of toolslogging artifact on branch [] exposed false.
  munge source files of toolscli artifact on branch [] exposed false.
  munge source files of riddley artifact on branch [] exposed false.
  munge source files of diffutils artifact on branch [] exposed false.
  munge source files of toolsreader artifact on branch [] exposed false.
  munge source files of rewrite-clj artifact on branch [] exposed false.
  munge source files of datacodec artifact on branch [] exposed false.
  munge source files of dataxml artifact on branch [] exposed false.
  munge source files of rewrite-cljs artifact on branch [] exposed false.
  munge source files of cljfmt artifact on branch [] exposed false.

and after digging out the inlined file the ns macro looks like this:

;; Copyright (c) Alex Taggart. All rights reserved.  The use
;; and distribution terms for this software are covered by the Eclipse
;; Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php)
;; which can be found in the file epl-v10.html at the root of this
;; distribution.  By using this software in any fashion, you are
;; agreeing to be bound by the terms of this license.  You must not
;; remove this notice, or any other, from this software.


(ns ^{:mranderson/inlined true} mranderson-test58044.toolslogging.v1v1v0.clojure.tools.logging.test
  (:import [clojure.lang Fn Keyword Namespace Symbol]
           java.util.Set
           java.util.regex.Pattern)
  (:require [mranderson-test58044.toolslogging.v1v1v0.clojure.tools.logging :refer [*logger-factory*]]
            [mranderson-test58044.toolslogging.v1v1v0.clojure.tools.logging.impl :as impl]))

so can't really repro the problem unfortunately. the load stmt thing is fixed too. let me know if i can be any help tho

benedekfazekas avatar Dec 05 '21 12:12 benedekfazekas