blob: bc0e7c5904b21b900f73a3b4673b86a7764fea31 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
(defstruct usr:compile-opts ()
usr:shadow-fun
usr:shadow-var
usr:shadow-cross
usr:unused
usr:constant-throws
usr:log-level)
(defsymacro %warning-syms% '(shadow-fun shadow-var shadow-cross
unused log-level constant-throws))
(defvar usr:*compile-opts* (new compile-opts unused t constant-throws t))
(defmacro when-opt (compile-opt . forms)
(with-gensyms (optval)
^(whenlet ((,optval usr:*compile-opts*.,compile-opt))
(macrolet ((diag (. args)
^(opt-controlled-diag ,',optval ,*args)))
,*forms))))
(defun opt-controlled-diag (optval . args)
(caseq optval
(:error (compile-error . args))
((t :warn) (compile-warning . args))))
|