We're updating the issue view to help you get more done. 

clojure.repl/source chokes when reading code with ::auto/resolved keys

Description

Reproduction

foo.clj

1 2 3 4 (ns foo (:require [clojure.java.io :as io])) (defn f [] ::io/key)

repl

1 2 3 4 5 Clojure 1.10.0-alpha4 user=> (require 'foo) nil user=> (source foo/f) RuntimeException Invalid token: ::io/key clojure.lang.Util.runtimeException (Util.java:221)

Problem analysis
source calls read, without any underlying binding or notion of Compiler.currentNS(), which causes aliased keywords to fail to resolve.

Possible solution
Bind *reader-resolver* to the following before reading:

1 2 3 4 5 (reify LispReader$Resolver (currentNS [_] 'ignored) (resolveClass [_ sym] 'ignored) (resolveAlias [_ sym] 'ignored) (resolveVar [_ sym] 'ignored))

Aside, the logic inside source-fn can be simplified with read+string, modulo CLJ-2358

Environment

None

Status

Assignee

Unassigned

Reporter

Ghadi Shayban

Labels

None

Approval

None

Patch

None

Priority

Minor