guile-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Guile-commits] 08/10: Wire up simplified warning levels in "guild compi


From: Andy Wingo
Subject: [Guile-commits] 08/10: Wire up simplified warning levels in "guild compile"
Date: Fri, 8 May 2020 11:13:43 -0400 (EDT)

wingo pushed a commit to branch master
in repository guile.

commit 220934c49d2629ebf826cc377541694334f44e7e
Author: Andy Wingo <address@hidden>
AuthorDate: Fri May 8 15:58:23 2020 +0200

    Wire up simplified warning levels in "guild compile"
    
    * am/guilec (GUILE_WARNINGS):
    * am/bootstrap.am (GUILE_WARNINGS): Explictly default to -W1.
    * bootstrap/Makefile.am (GUILE_WARNINGS): Set to -Wnone, as the meaning
      of "no -W flags" has changed to be effectively -W1.
    * module/scripts/compile.scm (%options): Adapt to parse -Wnone, -W2, and
      so on.
      (parse-args): Default to (default-warning-level).
      (show-warning-help): Add more warning help.
      (compile): Pass #:warning-level.
---
 am/bootstrap.am            |  2 +-
 am/guilec                  |  2 +-
 bootstrap/Makefile.am      |  4 ++--
 module/scripts/compile.scm | 42 +++++++++++++++++++++++++++++++-----------
 4 files changed, 35 insertions(+), 15 deletions(-)

diff --git a/am/bootstrap.am b/am/bootstrap.am
index 43f0f04..cc62e40 100644
--- a/am/bootstrap.am
+++ b/am/bootstrap.am
@@ -18,7 +18,7 @@
 ##   Fifth Floor, Boston, MA 02110-1301 USA
 
 # These variables can be set before you include bootstrap.am.
-GUILE_WARNINGS ?= -Wunbound-variable -Warity-mismatch -Wformat
+GUILE_WARNINGS ?= -W1
 GUILE_OPTIMIZATIONS ?= -O2
 GUILE_TARGET ?= $(host)
 GUILE_BUILD_TAG ?= BOOTSTRAP
diff --git a/am/guilec b/am/guilec
index fa2054e..94a13ff 100644
--- a/am/guilec
+++ b/am/guilec
@@ -1,7 +1,7 @@
 # -*- makefile -*-
 GOBJECTS = $(SOURCES:%.scm=%.go) $(ELISP_SOURCES:%.el=%.go)
 
-GUILE_WARNINGS = -Wunbound-variable -Wmacro-use-before-definition 
-Warity-mismatch -Wformat
+GUILE_WARNINGS = -W1
 
 moddir = $(pkgdatadir)/$(GUILE_EFFECTIVE_VERSION)/$(modpath)
 nobase_mod_DATA = $(SOURCES) $(ELISP_SOURCES) $(NOCOMP_SOURCES)
diff --git a/bootstrap/Makefile.am b/bootstrap/Makefile.am
index bcb22cd..ddcbfe5 100644
--- a/bootstrap/Makefile.am
+++ b/bootstrap/Makefile.am
@@ -1,7 +1,7 @@
 ## Process this file with automake to produce Makefile.in.
 ##
 ##     Copyright (C) 2009, 2010, 2011, 2012, 2013,
-##        2014, 2015, 2018 Free Software Foundation, Inc.
+##        2014, 2015, 2018, 2020 Free Software Foundation, Inc.
 ##
 ##   This file is part of GUILE.
 ##
@@ -21,7 +21,7 @@
 ##   Fifth Floor, Boston, MA 02110-1301 USA
 
 
-GUILE_WARNINGS =
+GUILE_WARNINGS = -Wnone
 # 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
diff --git a/module/scripts/compile.scm b/module/scripts/compile.scm
index 8dcb09b..ea6377b 100644
--- a/module/scripts/compile.scm
+++ b/module/scripts/compile.scm
@@ -30,7 +30,9 @@
 
 (define-module (scripts compile)
   #:use-module ((system base language) #:select (lookup-language))
-  #:use-module ((system base compile) #:select (compile-file))
+  #:use-module ((system base compile) #:select (compile-file
+                                                default-warning-level
+                                                default-optimization-level))
   #:use-module (system base target)
   #:use-module (system base message)
   #:use-module (system base optimize)
@@ -81,14 +83,27 @@
 
         (option '(#\W "warn") #t #f
                 (lambda (opt name arg result)
-                  (if (string=? arg "help")
-                      (begin
-                        (show-warning-help)
-                        (exit 0))
-                      (let ((warnings (assoc-ref result 'warnings)))
-                        (alist-cons 'warnings
-                                    (cons (string->symbol arg) warnings)
-                                    (alist-delete 'warnings result))))))
+                  (match arg
+                    ("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))
+                         (fail "Bad warning level `~a'" n))
+                       (alist-cons 'warning-level n
+                                   (alist-delete 'warning-level result))))
+                    (_
+                     (let ((warnings (assoc-ref result 'warnings)))
+                       (alist-cons 'warnings
+                                   (cons (string->symbol arg) warnings)
+                                   (alist-delete 'warnings result)))))))
 
        (option '(#\O "optimize") #t #f
                (lambda (opt name arg result)
@@ -141,8 +156,9 @@ options."
                             result)))
 
             ;; default option values
-             '((input-files)
+             `((input-files)
               (load-path)
+               (warning-level . ,(default-warning-level))
                (warnings unsupported-warning))))
 
 (define (show-version)
@@ -159,7 +175,9 @@ There is NO WARRANTY, to the extent permitted by law.~%"))
                       (format #f "`~A'" (warning-type-name wt))
                       (warning-type-description wt)))
             %warning-types)
-  (format #t "~%"))
+  (format #t "~%")
+  (format #t "You may also specify warning levels as `-Wnone', `-W0`, 
`-W1',~%")
+  (format #t "`-W2', `-W3', or `-Wall`.  The default is `-W1'.~%"))
 
 (define (show-optimization-help)
   (format #t "The available optimizations are:~%~%")
@@ -184,6 +202,7 @@ There is NO WARRANTY, to the extent permitted by law.~%"))
 (define (compile . args)
   (let* ((options         (parse-args args))
          (help?           (assoc-ref options 'help?))
+         (warning-level   (assoc-ref options 'warning-level))
          (compile-opts    `(#:warnings
                             ,(assoc-ref options 'warnings)
                             ,@(append-map
@@ -266,6 +285,7 @@ Report bugs to <~A>.~%"
                                             #:output-file output-file
                                             #:from from
                                             #:to to
+                                            #:warning-level warning-level
                                             #:opts compile-opts))))))
               input-files)))
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]