(class x) returns a JVM-faithful Class value
class / .getClass now return a Class value that renders like the JVM — (str c)/.toString -> "class <name>", pr -> "<name>", .getName/.getSimpleName/ .getCanonicalName work — but stays = and hash equal to its name string, so (= (class x) String), class-keyed maps, multimethod dispatch on class, and instance? keep working against the bare class-name tokens. instance? unwraps a Class passed as the type arg. clojure.test/class-match? no longer assumes (class e) is a string (a jolt-ism; on the JVM a Class isn't a string either) — reads the name via .getName. Matches JVM Class.toString, which libraries surface in error messages (clojure.data.json DJSON-54 expects "...of class java.net.URI"). data.json suite 139/139 bar the one UTF-16 surrogate test (Unicode-scalar char model). 5 corpus rows certified vs JVM; make test + shakesmoke green, 0 new divergences.
This commit is contained in:
parent
9092b30f8b
commit
8c7b98e5f2
5 changed files with 43 additions and 8 deletions
|
|
@ -548,6 +548,11 @@
|
|||
{:suite "host-interop / class tokens & readers" :label "(class x) matches the token" :expected "true" :actual "(= String (class \"abc\"))"}
|
||||
{:suite "host-interop / class tokens & readers" :label "defmulti on class dispatches" :expected ":str" :actual "(do (defmulti cm (fn [x] (class x))) (defmethod cm String [x] :str) (cm \"a\"))"}
|
||||
{:suite "host-interop / class tokens & readers" :label "defmethod on nil dispatch value" :expected ":nil" :actual "(do (defmulti cn (fn [x] (class x))) (defmethod cn nil [x] :nil) (defmethod cn String [x] :str) (cn nil))"}
|
||||
{:suite "host-interop / class tokens & readers" :label "Class str is class-prefixed" :expected "\"class java.lang.String\"" :actual "(str (class \"\"))"}
|
||||
{:suite "host-interop / class tokens & readers" :label "Class getName" :expected "\"java.lang.String\"" :actual "(.getName (class \"\"))"}
|
||||
{:suite "host-interop / class tokens & readers" :label "Class getSimpleName" :expected "\"Long\"" :actual "(.getSimpleName (class 5))"}
|
||||
{:suite "host-interop / class tokens & readers" :label "Class of equal-typed values is =" :expected "true" :actual "(= (class 5) (class 6))"}
|
||||
{:suite "host-interop / class tokens & readers" :label "Class in a thrown message" :expected "\"of class java.lang.String\"" :actual "(try (throw (Exception. (str \"of \" (class \"\")))) (catch Exception e (.getMessage e)))"}
|
||||
{:suite "host-interop / class tokens & readers" :label "ctor sugar still constructs" :expected "\"x\"" :actual "(.toString (StringBuilder. \"x\"))"}
|
||||
{:suite "host-interop / class tokens & readers" :label "return-hinted defn parses" :expected "7" :actual "(do (defn- hb ^bytes [b] b) (hb 7))"}
|
||||
{:suite "host-interop / class tokens & readers" :label "hinted multi-arity parses" :expected ":two" :actual "((fn ([x] :one) (^String [x y] :two)) 1 2)"}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue