diff --git a/finalizers.lisp b/finalizers.lisp index aa2adeb4290052d35bf272fd4f2fcc75f8f581b5..e6ed592ae546d698b469f40154eefe7af9778629 100644 --- a/finalizers.lisp +++ b/finalizers.lisp @@ -2,6 +2,13 @@ (in-package :asdf-finalizers) +(defvar *warn-when-finalizers-off* t + "Flag to enable or disable the raising warnings +when finalizers are used outside of context. +Typically, you want that flag to be on while compiling your application, but +off when your application is done compiled and you're at runtime.") + + ;; UNBOUND by default: catch people using them outside of a proper with-finalizers form! (defvar *finalizers*) (defvar *finalizers-data* nil) @@ -101,6 +108,7 @@ and a build from clean will hopefully catch him if he didn't." `(eval-when (:compile-toplevel :load-toplevel :execute) (unless ,already-done-p-form ,form))))) (already-done-p) ;; don't warn if it has already been done; it could be by design. + ((not *warn-when-finalizers-off*)) ;; don't warn if warnings are off - e.g. at runtime. ((stringp warning) (warn 'finalizers-off-simple-warning :format-control warning :format-arguments warning-arguments)) ((and warning (symbolp warning)) diff --git a/pkgdcl.lisp b/pkgdcl.lisp index 45b62864c3ecb13f16aae9473d992a9d5a5c1375..efb0fc307c1e50a02116af80dec717440f4d63c6 100644 --- a/pkgdcl.lisp +++ b/pkgdcl.lisp @@ -5,6 +5,7 @@ (defpackage :asdf-finalizers (:use :cl :asdf) (:export + #:*warn-when-finalizers-off* #:eval-at-toplevel #:final-forms #:register-finalizer