Mercurial > emacs
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