Index: /trunk/source/compiler/nx-basic.lisp
===================================================================
--- /trunk/source/compiler/nx-basic.lisp	(revision 14575)
+++ /trunk/source/compiler/nx-basic.lisp	(revision 14576)
@@ -393,8 +393,11 @@
          (check-all-symbols (symlist argname pairs pairsname)
           (dolist (v symlist)
-            (unless (symbolp v) 
-              (signal-simple-program-error "Malformed ~S list: ~S is not a symbol in ~S." argname v symlist))
-            (when (assq v pairs) 
-              (signal-simple-program-error "~S ~S conflicts with ~S ~S" argname v pairsname (assq v pairs))))))
+            (if (symbolp v)
+              (when (assq v pairs) 
+                (signal-simple-program-error "~S ~S conflicts with ~S ~S" argname v pairsname (assq v pairs)))
+              (if (eq argname :function)
+                (unless (valid-function-name-p v)
+                  (signal-simple-program-error "Malformed ~S list: ~S is not a function name in ~S." argname v symlist))
+                (signal-simple-program-error "Malformed ~S list: ~S is not a symbol in ~S." argname v symlist))))))
     (check-all-pairs symbol-macro :symbol-macro)
     (check-all-pairs macro :macro)
@@ -511,5 +514,5 @@
 				symbol-macro))
          (macros (mapcar #'(lambda (m) (list* (car m) 'macro (cadr m))) macro))
-         (functions (mapcar #'(lambda (f) (list* f 'function nil)) function))
+         (functions (mapcar #'(lambda (f) (list* (ensure-valid-function-name f) 'function nil)) function))
          (new-env (new-lexical-environment env)))
     (setf (lexenv.variables new-env) (nconc vars symbol-macros)
