Comment made by: gshayban
It's a little more insidious than type hinting: the compiler doesn't evaluate metadata in the binding vec.
This doesn't throw the necessary exception...
(let (link: ^{:foo (Class/forName "not real")} bar 42)
bar)
neither this...
(let (link: ^{gyorgy ligeti} a 42)
a)
Gyorgy Ligeti never resolves.
These two equivalent examples don't reflect:
(let (link: ^objects a (make-array Object 2))
(aget a 0))
(let (link: a ^objects (make-array Object 2))
(aget a 0))