From: Douglas K. <do...@go...> - 2013-10-11 22:48:50
|
Re-sending with patch inline, without typo in test case, but with typo in subject line because why not. >From 8ebb3839798b720d895b4d17eddc1649a14caabc Mon Sep 17 00:00:00 2001 From: Douglas Katzman <do...@go...> Date: Thu, 10 Oct 2013 11:56:32 -0400 Subject: [PATCH] Mustn't forget an undefined-function check on fopcompilable TLFs --- src/compiler/fopcompile.lisp | 2 ++ tests/fopcompiler.impure-cload.lisp | 11 +++++++++++ 2 files changed, 13 insertions(+) diff --git a/src/compiler/fopcompile.lisp b/src/compiler/fopcompile.lisp index 2ac2385..2711525 100644 --- a/src/compiler/fopcompile.lisp +++ b/src/compiler/fopcompile.lisp @@ -362,6 +362,8 @@ (sb!fasl::dump-fop 'sb!fasl::fop-package *compile-object*)) (t + (when (eq (info :function :where-from operator) :assumed) + (note-undefined-reference operator :function)) (fopcompile-constant operator t) (dolist (arg args) (fopcompile arg path t)) diff --git a/tests/fopcompiler.impure-cload.lisp b/tests/fopcompiler.impure-cload.lisp index 25fc8e7..71c6dc0 100644 --- a/tests/fopcompiler.impure-cload.lisp +++ b/tests/fopcompiler.impure-cload.lisp @@ -94,3 +94,14 @@ (y (bar (x foo)))) (bar (y x foo)))) +;; Ensure that fopcompiling a call to an assumed function style-warns. +(defvar *file* #p"compile-temp.lisp") +(with-test (:name (:fopcompiler :undefined-warning)) + (with-open-file (stream *file* :direction :output :if-exists :supersede) + ;; protect in case 'UNKNOWN-FN is the name of a function some day... + (write `(defvar *foo* (,(make-symbol "UNKNOWN-FN"))) :stream stream)) + (multiple-value-bind (output warningp errorp) (compile-file *file*) + (when output + (delete-file output)) + (assert (and warningp (not errorp))))) +(delete-file *file*) -- 1.7.10.2 (Apple Git-33) On Thu, Oct 10, 2013 at 12:40 PM, Douglas Katzman <do...@go...> wrote: > fopcompiler was too forgiving. See attached. > |