summaryrefslogtreecommitdiff
path: root/python.diff
blob: aa2ffd7f888e6f7c0afa61fc4654ab9c54b7a8a4 (about) (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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
diff --git a/module/system/base/compile.scm b/module/system/base/compile.scm
index c110512f0..d5d63a9e0 100644
--- a/module/system/base/compile.scm
+++ b/module/system/base/compile.scm
@@ -132,9 +132,30 @@
          (and (false-if-exception (ensure-directory (dirname f)))
               f))))
 
+(define *do-extension-dispatch* #f)
+(define *extension-dispatches*  '((("py") . python) (("pl") . prolog)))
+
+(define (default-language file)
+  (define default (current-language))
+  (if *do-extension-dispatch*
+      (let ((ext (car (reverse (string-split file #\.)))))
+        (let lp ((l *extension-dispatches*))
+          (if (pair? l)
+              (if (member ext (caar l))
+                  (let ((r (cdar l)))
+                    (if (language? default)
+                        (if (eq? (language-name default) r)
+                            default
+                            r)
+                        r))
+                  (lp (cdr l)))
+              default)))
+      default))
+      
+      
 (define* (compile-file file #:key
                        (output-file #f)
-                       (from (current-language))
+                       (from (default-language file))
                        (to 'bytecode)
                        (env (default-environment from))
                        (opts '())
diff --git a/module/system/base/message.scm b/module/system/base/message.scm
index 979291c1e..c0d639235 100644
--- a/module/system/base/message.scm
+++ b/module/system/base/message.scm
@@ -34,7 +34,8 @@
             warning-type? warning-type-name warning-type-description
             warning-type-printer lookup-warning-type
 
-            %warning-types))
+            %warning-types
+            %dont-warn-list))
 
 
 ;;;
@@ -74,6 +75,7 @@
   (description  warning-type-description)
   (printer      warning-type-printer))
 
+(define %dont-warn-list '())
 (define %warning-types
   ;; List of known warning types.
   (map (lambda (args)
@@ -112,8 +114,9 @@
            (unbound-variable
             "report possibly unbound variables"
             ,(lambda (port loc name)
-               (emit port "~A: warning: possibly unbound variable `~A'~%"
-                     loc name)))
+               (if (not (member name %dont-warn-list))
+                   (emit port "~A: warning: possibly unbound variable `~A'~%"
+                         loc name))))
 
            (macro-use-before-definition
             "report possibly mis-use of macros before they are defined"