Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Inline tools.analyzer deps + support Clojure 1.12 qualified methods #747

Open
wants to merge 16 commits into
base: main
Choose a base branch
from
8 changes: 7 additions & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,9 @@ jobs:
- { os: macos-latest, shell: bash }
- { os: ubuntu-latest, shell: bash }
- { os: windows-latest, shell: powershell }
clojure:
- 1.10.3
- 1.12.0

defaults:
run:
Expand Down Expand Up @@ -98,7 +101,10 @@ jobs:
key: ${{ runner.os }}-maven-test-${{ hashFiles('deps.edn') }}

- name: 🧪 Run tests
run: bb test:clj :kaocha/reporter '[kaocha.report/documentation]'
shell: bash
run: |
bb test:clj :kaocha/reporter '[kaocha.report/documentation]' \
:clojure '"${{ matrix.clojure }}"'

static-build:
runs-on: ubuntu-latest
Expand Down
6 changes: 5 additions & 1 deletion bb.edn
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,11 @@
:task (run '-check {:parallel true})}

test:clj {:doc "Run clojure tests"
:task (apply clojure "-X:test" *command-line-args*)}
:task
(let [{clojure-version :clojure} (cli/parse-opts *command-line-args*)]
(apply clojure (cond-> "-X:test"
clojure (str ":" clojure-version))
*command-line-args*))}

playwright:version {:doc "Print used playwright version from ui_tests/yarn.json"
:task (print (->> (babashka.process/shell {:out :string} "grep -E 'playwright-core \"(.*)\"' ui_tests/yarn.lock")
Expand Down
3 changes: 1 addition & 2 deletions build.clj
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
(ns build
(:require
[babashka.process :as process]
[clojure.string :as str]
[clojure.tools.build.api :as b]
[nextjournal.clerk.config :as config]
Expand Down Expand Up @@ -38,7 +37,7 @@
[:license
[:name "ISC License"]
[:url "https://opensource.org/license/isc-license-txt"]]]]})
(b/copy-dir {:src-dirs ["src" "resources"]
(b/copy-dir {:src-dirs ["src" "resources" "tools-analyzer"]
:target-dir class-dir
:replace {}})
(package-clerk-asset-map {:target-dir class-dir})
Expand Down
11 changes: 7 additions & 4 deletions deps.edn
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
{:paths ["src" "resources" "bb"]
{:paths ["src" "resources" "bb" "tools-analyzer"]
:deps {org.clojure/clojure {:mvn/version "1.10.3"}
org.clojure/java.classpath {:mvn/version "1.0.0"}
org.clojure/tools.analyzer {:mvn/version "1.2.0"}
org.clojure/tools.analyzer.jvm {:mvn/version "1.3.0"}
;; org.clojure/tools.analyzer.jvm {:mvn/version "1.3.0"}
org.ow2.asm/asm {:mvn/version "9.2"} ;; tools.analyzer dependency
babashka/fs {:mvn/version "0.5.22"}
borkdude/edamame {:mvn/version "1.4.24"}
borkdude/edamame {:mvn/version "1.4.28"}
weavejester/dependency {:mvn/version "0.2.1"}
com.nextjournal/beholder {:mvn/version "1.0.2"}
org.flatland/ordered {:mvn/version "1.15.12"}
Expand Down Expand Up @@ -39,7 +40,7 @@

:sci {:extra-deps {io.github.nextjournal/clerk.render {:local/root "render"}}}

:dev {:extra-deps {org.clojure/clojure {:mvn/version "1.12.0-beta1"} ;; for `:as-alias` & `add-lib` support but only in dev
:dev {:extra-deps {org.clojure/clojure {:mvn/version "1.12.0"} ;; for `:as-alias` & `add-lib` support but only in dev
arrowic/arrowic {:mvn/version "0.1.1"}
binaryage/devtools {:mvn/version "1.0.3"}
cider/cider-nrepl {:mvn/version "0.49.3"}
Expand Down Expand Up @@ -75,6 +76,8 @@
;; Run a single test:
;; clj -M:test -v nextjournal.clerk.analyzer-test/analyze-doc
:main-opts ["-m" "cognitect.test-runner"]}
:1.10.3 {:extra-deps {org.clojure/clojure {:mvn/version "1.10.3"}}}
:1.12.0 {:extra-deps {org.clojure/clojure {:mvn/version "1.12.0"}}}

:demo {:extra-paths ["demo"]
:extra-deps {com.github.seancorfield/next.jdbc {:mvn/version "1.2.659"}
Expand Down
19 changes: 19 additions & 0 deletions notebooks/clojure_1_12.clj
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
(ns clojure-1-12)

(String/.length "foo")

(map String/.length ["f" "fo" "foo"])

String/1

Integer/parseInt ;; method value

String/CASE_INSENSITIVE_ORDER ;; field

(String/new "dude") ;; constructor

^[String] String/new

(map ^[String] String/new ["dude"])

(map Integer/parseInt ["1" "2" "3"])
4 changes: 2 additions & 2 deletions src/nextjournal/clerk/analyzer.clj
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@
[clojure.string :as str]
[clojure.tools.analyzer :as ana]
[clojure.tools.analyzer.ast :as ana-ast]
[clojure.tools.analyzer.jvm :as ana-jvm]
[clojure.tools.analyzer.utils :as ana-utils]
[multiformats.base.b58 :as b58]
[multiformats.hash :as hash]
[nextjournal.clerk.parser :as parser]
[nextjournal.clerk.classpath :as cp]
[nextjournal.clerk.clojure.tools.analyzer.jvm :as ana-jvm]
[nextjournal.clerk.config :as config]
[nextjournal.clerk.parser :as parser]
[nextjournal.clerk.walk :as walk]
[taoensso.nippy :as nippy]
[weavejester.dependency :as dep]))
Expand Down
8 changes: 8 additions & 0 deletions test/nextjournal/clerk/clojure_1_12_test.clj
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
(ns nextjournal.clerk.clojure-1-12-test
(:require [clojure.test :as t :refer [deftest is]]
[nextjournal.clerk :as clerk]))

(when (>= (:minor *clojure-version*) 12)
(deftest notebook-is-analyzed-without-errors-test
(is (do (clerk/show! "notebooks/clojure_1_12.clj")
true))))
Loading
Loading