现在的函数clojure.core/load-libs将'(a.namespace.name)'视为前缀列表,所以这个结构没有任何效果(就像是一个没有后缀的前缀列表)。同时,'(link: a.namespace.name)'会导致require调用(require 'a.namespace.name')。在其他情况下,require或use函数在()和(link:)之间的区别上是含糊的。在这种情况下,无操作和库加载之间的差异存在。例如,Clojure验证工具Eastwood对此情况包含了一个规则,因为(require '(a.namespace.name))的行为并不明显。
建议的更改可以帮助在require或use调用中避免这种特殊情况(包括那些来自ns宏展开的调用)。接受列表和向量作为库规范,使得行为统一,类似于前缀列表中处理后缀项的方式。
修补程序最小化以避免在clojure/core.clj中对sequential?函数重排序。
我应该包括这些情况的测试吗?