Primitive alias do not work when the meta data is evaluated, for example in the case of def.
In this example, char is interpreted to be the function char rather than the type alias. This is because clojure.lang.Compiler$DefExpr$Parser.parse evaluates the meta data on the symbol.
(def ^char x \space)
(String/valueOf x)
=> CompilerException java.lang.IllegalArgumentException: Unable to resolve classname: clojure.core$char@7b82f7d1
Instead, this has to be written as
(def ^Character/TYPE x \space)
However, when using primitive type hints in-line, they work fine:
(def x \space)
(String/valueOf ^char x)
Primitive type aliases should be handled consistently.
Googling shows that this seems to be a well-known problem, but I have not found a Jira issue for it.