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"