diff lisp/emacs-lisp/eieio-comp.el @ 104489:25e047f7f6a2

Synch to Eric Ludlam's upstream CEDET repository. * cedet/semantic/wisent/java-tags.el: * cedet/semantic/wisent/javat-wy.el: New files. * cedet/semantic/wisent/java.el: * cedet/semantic/wisent/java-wy.el: Files removed. * cedet/semantic/java.el (semantic-java-prototype-function) (semantic-java-prototype-variable, semantic-java-prototype-type): Doc fix (java-mode::semantic-format-tag-prototype): Renamed from semantic-format-prototype-tag, which didn't match the overloadable function. * cedet/semantic/bovine/c.el (semantic-c-dereference-namespace-alias): Deal correctly with nested namespaces. Make sure type actually exists in original namespace. * cedet/semantic/lex-spp.el (semantic-lex-spp-hack-depth): New. (semantic-lex-spp-lex-text-string): Use above to enable recursion. * cedet/semantic/format.el: Whitespace cleanup. (semantic-test-all-format-tag-functions): Move to end. (semantic-format-tag-prototype, semantic-format-tag-name) (semantic-format-tag-name-default): Revert to original upstream positions. * cedet/semantic/elp.el: File removed. * cedet/semantic/analyze.el (semantic-adebug-analyze): New function, moved here from semantic/adebug. * cedet/semantic/adebug.el: Declare external semanticdb functions. (semantic-adebug-analyze, semantic-adebug-edebug-expr): Deleted. * emacs-lisp/eieio.el (eieio-unbound): Default value is now robust to recompile. * emacs-lisp/eieio-datadebug.el: Add eieio objects to the list of data debug things to recognize. * emacs-lisp/eieio-comp.el: Synch to upstream. * cedet/data-debug.el: Don't require eieio and semantic/tag. If eieio is loaded, require eieio-datadebug. (data-debug-insert-ring-button): Do not be specific about the ring contents. (data-debug-thing-alist): Remove eieio and semantic specific entries. (data-debug-add-specialized-thing): New function. * cedet/cedet.el: Update commentary. * cedet/cedet-edebug.el: Require edebug and debug.
author Chong Yidong <cyd@stupidchicken.com>
date Sun, 13 Sep 2009 15:58:30 +0000
parents a64f3429f0ac
children
line wrap: on
line diff
--- a/lisp/emacs-lisp/eieio-comp.el	Fri Sep 11 01:17:46 2009 +0000
+++ b/lisp/emacs-lisp/eieio-comp.el	Sun Sep 13 15:58:30 2009 +0000
@@ -32,70 +32,24 @@
 
 ;;; Code:
 
-(eval-and-compile
-  (if (featurep 'xemacs)
-      (progn
-	;; XEmacs compatibility settings.
-	(if (not (fboundp 'byte-compile-compiled-obj-to-list))
-	    (defun byte-compile-compiled-obj-to-list (moose) nil))
-	(if (not (boundp 'byte-compile-outbuffer))
-	    (defvar byte-compile-outbuffer nil))
-	(defmacro eieio-byte-compile-princ-code (code outbuffer)
-	  `(progn (if (atom ,code)
-		      (princ "#[" ,outbuffer)
-		    (princ "'(" ,outbuffer))
-		  (let ((codelist (if (byte-code-function-p ,code)
-				      (byte-compile-compiled-obj-to-list ,code)
-				    (append ,code nil))))
-		    (while codelist
-		      (eieio-prin1 (car codelist) ,outbuffer)
-		      (princ " " ,outbuffer)
-		      (setq codelist (cdr codelist))))
-		  (if (atom ,code)
-		      (princ "]" ,outbuffer)
-		    (princ ")" ,outbuffer))))
-	(defun eieio-prin1 (code outbuffer)
-	  (cond ((byte-code-function-p code)
-		 (let ((codelist (byte-compile-compiled-obj-to-list code)))
-		   (princ "#[" outbuffer)
-		   (while codelist
-		     (eieio-prin1 (car codelist) outbuffer)
-		     (princ " " outbuffer)
-		     (setq codelist (cdr codelist)))
-		   (princ "]" outbuffer)))
-		((vectorp code)
-		 (let ((i 0) (ln (length code)))
-		   (princ "[" outbuffer)
-		   (while (< i ln)
-		     (eieio-prin1 (aref code i) outbuffer)
-		     (princ " " outbuffer)
-		     (setq i (1+ i)))
-		   (princ "]" outbuffer)))
-		(t (prin1 code outbuffer)))))
-    ;; Emacs:
-    (defmacro eieio-byte-compile-princ-code (code outbuffer)
-      (list 'prin1 code outbuffer))
-    ;; Dynamically bound in byte-compile-from-buffer.
-    (defvar bytecomp-outbuffer)
-    (defvar bytecomp-filename)))
-
 (declare-function eieio-defgeneric-form "eieio" (method doc-string))
 
-(defun byte-compile-defmethod-param-convert (paramlist)
-  "Convert method params into the params used by the defmethod thingy.
-Argument PARAMLIST is the paramter list to convert."
-  (let ((argfix nil))
-    (while paramlist
-      (setq argfix (cons (if (listp (car paramlist))
-			     (car (car paramlist))
-			   (car paramlist))
-			 argfix))
-      (setq paramlist (cdr paramlist)))
-    (nreverse argfix)))
+;; Some compatibility stuff
+(eval-and-compile
+  (if (not (fboundp 'byte-compile-compiled-obj-to-list))
+      (defun byte-compile-compiled-obj-to-list (moose) nil))
+
+  (if (not (boundp 'byte-compile-outbuffer))
+      (defvar byte-compile-outbuffer nil))
+  )
 
 ;; This teaches the byte compiler how to do this sort of thing.
 (put 'defmethod 'byte-hunk-handler 'byte-compile-file-form-defmethod)
 
+;; Variables used free:
+(defvar outbuffer)
+(defvar filename)
+
 (defun byte-compile-file-form-defmethod (form)
   "Mumble about the method we are compiling.
 This function is mostly ripped from `byte-compile-file-form-defun', but
@@ -126,14 +80,18 @@
 	 (lamparams (byte-compile-defmethod-param-convert params))
 	 (arg1 (car params))
 	 (class (if (listp arg1) (nth 1 arg1) nil))
-	 (my-outbuffer (if (featurep 'xemacs)
+	 (my-outbuffer (if (eval-when-compile (featurep 'xemacs))
 			   byte-compile-outbuffer
-			 bytecomp-outbuffer)))
+			 (condition-case nil
+			     bytecomp-outbuffer
+			   (error outbuffer))))
+	 )
     (let ((name (format "%s::%s" (or class "#<generic>") meth)))
       (if byte-compile-verbose
-	  ;; bytecomp-filename is from byte-compile-from-buffer.
-	  (message "Compiling %s... (%s)" (or bytecomp-filename "") name))
-      (setq byte-compile-current-form name)) ; for warnings
+	  ;; #### filename used free
+	  (message "Compiling %s... (%s)" (or filename "") name))
+      (setq byte-compile-current-form name) ; for warnings
+      )
     ;; Flush any pending output
     (byte-compile-flush-pending)
     ;; Byte compile the body.  For the byte compiled forms, add the
@@ -149,8 +107,9 @@
       (princ key my-outbuffer)
       (prin1 params my-outbuffer)
       (princ " " my-outbuffer)
-      (eieio-byte-compile-princ-code code my-outbuffer)
-      (princ "))" my-outbuffer))
+      (prin1 code my-outbuffer)
+      (princ "))" my-outbuffer)
+      )
     ;; Now add this function to the list of known functions.
     ;; Don't bother with a doc string.   Not relevant here.
     (add-to-list 'byte-compile-function-environment
@@ -165,6 +124,18 @@
     ;; nil prevents cruft from appearing in the output buffer.
     nil))
 
+(defun byte-compile-defmethod-param-convert (paramlist)
+  "Convert method params into the params used by the defmethod thingy.
+Argument PARAMLIST is the paramter list to convert."
+  (let ((argfix nil))
+    (while paramlist
+      (setq argfix (cons (if (listp (car paramlist))
+			     (car (car paramlist))
+			   (car paramlist))
+			 argfix))
+      (setq paramlist (cdr paramlist)))
+    (nreverse argfix)))
+
 (provide 'eieio-comp)
 
 ;;; eieio-comp.el ends here