Common lisp 怎么去除依赖的style-warning

我的 asd 文件内容是这样的:

(defsystem ring-test
  :version "0.0.1"
  :author "ring"
  :license ""
  :depends-on (:uiop :capstone)
  :components ((:module "src"
                :components
                ((:file "main"))))
  :description "")

通过这个命令运行 sbcl --eval '(push (uiop:getcwd) asdf:*central-registry*)' --eval '(asdf:load-system :trace-analyse)' --quit,就会出来很多warning,比如

STYLE-WARNING:
   The new FTYPE proclamation for FSET::VECTOR-SET-BINARY-SEARCH-LO
     (FUNCTION (SIMPLE-VECTOR T) FIXNUM)
   does not match the derived return type
     (FUNCTION (SIMPLE-VECTOR T)
      (VALUES (INTEGER -4611686018427387904 4611686018427387904) &OPTIONAL))
STYLE-WARNING:
   The new FTYPE proclamation for FSET::WB-BAG-TREE-TOTAL-COUNT
     (FUNCTION (FSET::WB-BAG-TREE) INTEGER)
   does not match the derived return type
     (FUNCTION ((OR LIST FSET::WB-BAG-TREE-NODE)) *)
STYLE-WARNING:
   ....

但是这些warning和我的代码没有关系,都是依赖里面的。我想去除和这些依赖相关的warning,但是和自己代码相关的仍然展示,有什么方法吗?

已经编译过的就不会再报 warning 了。

如果实在想整活

(handler-bind ((style-warning
                (lambda (c)
                  (unless #|current package is your package|#
                    (invoke-restart 'muffle-warning)))))
  #|load files|#)
1 个赞

感谢帮助,不过最后发现这个包原本的实现有点问题,功能也不全,准备自己重新写一份 :smile: