欢迎参观!请查看 关于 页面以了解更多关于这个网站如何工作的信息。
clojure.repl/source 在 deftype 上不起作用
user> (deftype Foo [a b]) user.Foo user> (source Foo) 未找到源代码
原因:deftype 创建了一个类但不创建变量,因此没有将文件/行信息附加在任何位置。
方法
补丁
审查
评论者:importer
转换自 http://www.assembla.com/spaces/clojure/tickets/304
stu 说:这听起来是个不错的想法,但是如果我们疏忽了紧急使用情况,目前我们会将其暂时放在一边。
[email protected] 说:这是个很好的问题。get-source 只需一个文件名和行号。
如果 IMeta 是一个协议,它可以通过 Class 扩展。那种实现可以在“已知”静态字段中查找,比如?__clojure_meta 或者类似的东西?然后 deftype 只需要填写那个字段,get-source 就可以设定好了。
这个计划有优势吗?有更好的地方来存储文件名和行号吗?
评论者:gtrak
我可以将这个用于 cider 的文件/行跳转机制。
对于记录,我可以通过派生和找到相应的构造器 var 来解决这个问题,但这有点棘手。
评论者:bozhidar
我也愿意看到这个问题被修复。
评论者:jafingerhut
Bozhidar,在工单上投票(在查看工单时点击页面右边的“投票”链接)可以帮助将其在工单列表中向上提升 1 票。
Andy,谢谢你的提示。他们应该把这个按钮做得更大,我之前一直没注意到。
评论者:alexmiller
如果有人做了相关工作(比如提交补丁),我会更积极地推动。
评论者:baptiste
使用这个就能“正常工作”:=>
(source source-training.source/->Foo)