From 434e1ad46e7d906b482d46ac8cf9d83eb9e769bc Mon Sep 17 00:00:00 2001 From: Juan Jose Garcia Ripoll Date: Mon, 23 Apr 2012 19:30:46 +0200 Subject: [PATCH] MAKE-LOAD-FORM specialized on STANDARD-OBJECT, STRUCTURE-OBJECT and CONDITION must signal an error --- src/CHANGELOG | 3 +++ src/clos/load.lsp.in | 2 +- src/clos/print.lsp | 15 +++++++++++++-- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/CHANGELOG b/src/CHANGELOG index cf936dadd..b228f8b53 100755 --- a/src/CHANGELOG +++ b/src/CHANGELOG @@ -11,6 +11,9 @@ ECL 12.2.2: - REMOVE-METHOD and FIND-METHOD were not generic functions. + - MAKE-LOAD-FORM's methods for standard-object, structure-object and + condition did not signal an error). + * Visible changes: - DIRECTORY no longer complains when it finds an inexistent directory diff --git a/src/clos/load.lsp.in b/src/clos/load.lsp.in index 5ddf084c6..ae4f88e90 100644 --- a/src/clos/load.lsp.in +++ b/src/clos/load.lsp.in @@ -14,12 +14,12 @@ "src:clos;stdmethod.lsp" "src:clos;generic.lsp" "src:clos;fixup.lsp" + "src:clos;conditions.lsp" "src:clos;print.lsp" #+clos-streams "src:clos;streams.lsp" #+cmu-format "src:lsp;pprint.lsp" - "src:clos;conditions.lsp" "src:lsp;describe.lsp" ; Depends on conditions.lsp "src:clos;inspect.lsp" ; Depends on describe.lsp "src:lsp;top.lsp" ; Depends on conditions.lsp diff --git a/src/clos/print.lsp b/src/clos/print.lsp index d5ed90f60..378dd6186 100644 --- a/src/clos/print.lsp +++ b/src/clos/print.lsp @@ -134,10 +134,21 @@ printer and we should rather use MAKE-LOAD-FORM." `(ext:hash-table-fill ,make-form ',content) nil)))) (t - (error "Cannot externalize object ~a" object))))) + (no-make-load-form object))))) (defmethod make-load-form ((object standard-object) &optional environment) - (make-load-form-saving-slots object :environment environment)) + (no-make-load-form object)) + +(defmethod make-load-form ((object structure-object) &optional environment) + (no-make-load-form object)) + +(defmethod make-load-form ((object condition) &optional environment) + (no-make-load-form object)) + +(defun no-make-load-form (object) + (declare (si::c-local)) + (error "No adequate specialization of MAKE-LOAD-FORM for an object of type" + (type-of object))) (defmethod make-load-form ((class class) &optional environment) (declare (ignore environment))