mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-29 19:30:36 +02:00
Warning and optimization levels always small integers
* module/language/tree-il/analyze.scm (make-analyzer): Expect an int for optimization level. * module/scripts/compile.scm (%options, show-warning-help): No more -Wnone / Wall; use -W0 or -W9 instead. * module/system/base/compile.scm (level-validator): Validate small int. (compute-analyzer, add-default-optimizations): Likewise. * test-suite/tests/optargs.test (without-compiler-warnings): * test-suite/tests/tree-il.test (call-with-warnings): Parameterize level to 0, not #f. * bootstrap/Makefile.am (GUILE_WARNINGS): Use -W0, not -Wnone.
This commit is contained in:
parent
220934c49d
commit
e9c0f3071d
6 changed files with 13 additions and 21 deletions
|
@ -21,7 +21,7 @@
|
|||
## Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
|
||||
GUILE_WARNINGS = -Wnone
|
||||
GUILE_WARNINGS = -W0
|
||||
# Loading eval.go happens before boot and therefore before modules are
|
||||
# resolved. For some reason if compiled without resolve-primitives,
|
||||
# attempts to resolve primitives at boot fail; weird. Should fix this
|
||||
|
|
|
@ -1098,10 +1098,7 @@ resort, return #t when EXP refers to the global variable SPECIAL-NAME."
|
|||
#(format 1 ,format-analysis)))
|
||||
|
||||
(define (make-analyzer warning-level warnings)
|
||||
(define (enabled-for-level? level)
|
||||
(match warning-level
|
||||
((? boolean?) warning-level)
|
||||
((? exact-integer?) (>= warning-level level))))
|
||||
(define (enabled-for-level? level) (<= level warning-level))
|
||||
(let ((analyses (filter-map (match-lambda
|
||||
(#(kind level analysis)
|
||||
(and (or (enabled-for-level? level)
|
||||
|
|
|
@ -87,12 +87,6 @@
|
|||
("help"
|
||||
(show-warning-help)
|
||||
(exit 0))
|
||||
("all"
|
||||
(alist-cons 'warning-level #t
|
||||
(alist-delete 'warning-level result)))
|
||||
("none"
|
||||
(alist-cons 'warning-level #f
|
||||
(alist-delete 'warning-level result)))
|
||||
((? string->number)
|
||||
(let ((n (string->number arg)))
|
||||
(unless (and (exact-integer? n) (<= 0 n))
|
||||
|
@ -176,8 +170,8 @@ There is NO WARRANTY, to the extent permitted by law.~%"))
|
|||
(warning-type-description wt)))
|
||||
%warning-types)
|
||||
(format #t "~%")
|
||||
(format #t "You may also specify warning levels as `-Wnone', `-W0`, `-W1',~%")
|
||||
(format #t "`-W2', `-W3', or `-Wall`. The default is `-W1'.~%"))
|
||||
(format #t "You may also specify warning levels as `-W0`, `-W1',~%")
|
||||
(format #t "`-W2', or `-W3'. The default is `-W1'.~%"))
|
||||
|
||||
(define (show-optimization-help)
|
||||
(format #t "The available optimizations are:~%~%")
|
||||
|
|
|
@ -34,12 +34,11 @@
|
|||
|
||||
|
||||
(define (level-validator x)
|
||||
(match x
|
||||
((? boolean?) x)
|
||||
((and (? exact-integer?) (not (? negative?))) x)
|
||||
(_ (error
|
||||
"bad warning or optimization level: expected #f, #t, or integer >= 0"
|
||||
x))))
|
||||
(unless (and (exact-integer? x) (<= 0 x 9))
|
||||
(error
|
||||
"bad warning or optimization level: expected integer between 0 and 9"
|
||||
x))
|
||||
x)
|
||||
|
||||
(define default-warning-level (make-parameter 1 level-validator))
|
||||
(define default-optimization-level (make-parameter 2 level-validator))
|
||||
|
@ -215,6 +214,7 @@
|
|||
;;;
|
||||
|
||||
(define (compute-analyzer lang warning-level opts)
|
||||
(level-validator warning-level)
|
||||
(match (language-analyzer lang)
|
||||
(#f (lambda (exp env) (values)))
|
||||
(proc (proc warning-level
|
||||
|
@ -225,6 +225,7 @@
|
|||
((_ _ . opts) (lp opts))))))))
|
||||
|
||||
(define (add-default-optimizations lang optimization-level opts)
|
||||
(level-validator optimization-level)
|
||||
(match (language-optimizations-for-level lang)
|
||||
(#f opts)
|
||||
(get-opts (append opts (get-opts optimization-level)))))
|
||||
|
|
|
@ -48,7 +48,7 @@
|
|||
;;;
|
||||
|
||||
(define-syntax-rule (without-compiler-warnings exp ...)
|
||||
(parameterize ((default-warning-level #f)) exp ...))
|
||||
(parameterize ((default-warning-level 0)) exp ...))
|
||||
|
||||
(without-compiler-warnings
|
||||
(with-test-prefix/c&e "let-keywords"
|
||||
|
|
|
@ -242,7 +242,7 @@
|
|||
(define (call-with-warnings thunk)
|
||||
(let ((port (open-output-string)))
|
||||
;; Disable any warnings added by default.
|
||||
(parameterize ((default-warning-level #f))
|
||||
(parameterize ((default-warning-level 0))
|
||||
(with-fluids ((*current-warning-port* port)
|
||||
(*current-warning-prefix* ""))
|
||||
(thunk)))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue