jschaf / esup

ESUP - Emacs Start Up Profiler
398 stars 22 forks source link

EIEIO constructor requires an object name #24

Closed jezcope closed 9 years ago

jezcope commented 9 years ago

The commit 2186a5f breaks esup, resulting in the following error:

Debugger entered--Lisp error: (invalid-slot-name "#<esup-result :file>" "/home/jez/.dotfiles/emacs.d/init.el")
  signal(invalid-slot-name ("#<esup-result :file>" "/home/jez/.dotfiles/emacs.d/init.el"))
  #[(object slot-name operation &optional new-value) "\302\303\304! D\"\207" [object slot-name signal invalid-slot-name eieio-object-name] 4 "Method invoked when an attempt to access a slot in OBJECT fails.\nSLOT-NAME is the name of the failed slot, OPERATION is the type of access\nthat was requested, and optional NEW-VALUE is the value that was desired\nto be set.\n\nThis method is called from `oref', `oset', and other functions which\ndirectly reference slots in EIEIO objects."]([object esup-result :file "" 0 0 "" 0 0 0 0 0] "/home/jez/.dotfiles/emacs.d/init.el" oset :expression-string)
  apply(#[(object slot-name operation &optional new-value) "\302\303\304! D\"\207" [object slot-name signal invalid-slot-name eieio-object-name] 4 "Method invoked when an attempt to access a slot in OBJECT fails.\nSLOT-NAME is the name of the failed slot, OPERATION is the type of access\nthat was requested, and optional NEW-VALUE is the value that was desired\nto be set.\n\nThis method is called from `oref', `oset', and other functions which\ndirectly reference slots in EIEIO objects."] ([object esup-result :file "" 0 0 "" 0 0 0 0 0] "/home/jez/.dotfiles/emacs.d/init.el" oset :expression-string))
  slot-missing([object esup-result :file "" 0 0 "" 0 0 0 0 0] "/home/jez/.dotfiles/emacs.d/init.el" oset :expression-string)
  #[(obj slots) "\304\216\305H  B\n\2057\306\305H\n@\"\211\204%\307\n@\310\nA@$\210\202-\311\nA@#\210)\nAA\211\204\f\312)\207" [obj eieio--scoped-class-stack slots rn ((byte-code "\210A\301\207" [eieio--scoped-class-stack nil] 1)) 1 eieio-initarg-to-attribute slot-missing oset eieio-oset nil] 6 "Set slots of OBJ with SLOTS which is a list of name/value pairs.\nCalled from the constructor routine."]([object esup-result :file "" 0 0 "" 0 0 0 0 0] ("/home/jez/.dotfiles/emacs.d/init.el" :expression-string #("(setq dotfiles-dir (file-name-directory (or (buffer-file-name) load-file-name)))" 0 80 (fontified nil)) :start-point 228 :end-point 308 :line-number 7 :exec-time 1.7223e-05 :gc-number 0 :gc-time 0.0))
  apply(#[(obj slots) "\304\216\305H  B\n\2057\306\305H\n@\"\211\204%\307\n@\310\nA@$\210\202-\311\nA@#\210)\nAA\211\204\f\312)\207" [obj eieio--scoped-class-stack slots rn ((byte-code "\210A\301\207" [eieio--scoped-class-stack nil] 1)) 1 eieio-initarg-to-attribute slot-missing oset eieio-oset nil] 6 "Set slots of OBJ with SLOTS which is a list of name/value pairs.\nCalled from the constructor routine."] ([object esup-result :file "" 0 0 "" 0 0 0 0 0] ("/home/jez/.dotfiles/emacs.d/init.el" :expression-string #("(setq dotfiles-dir (file-name-directory (or (buffer-file-name) load-file-name)))" 0 80 (fontified nil)) :start-point 228 :end-point 308 :line-number 7 :exec-time 1.7223e-05 :gc-number 0 :gc-time 0.0)))
  shared-initialize([object esup-result :file "" 0 0 "" 0 0 0 0 0] ("/home/jez/.dotfiles/emacs.d/init.el" :expression-string #("(setq dotfiles-dir (file-name-directory (or (buffer-file-name) load-file-name)))" 0 80 (fontified nil)) :start-point 228 :end-point 308 :line-number 7 :exec-time 1.7223e-05 :gc-number 0 :gc-time 0.0))
  #[(this &optional slots) "\306H\307N\211\310H \311H\n\203/\312@!\211@=\204%\313\n@\f#\210)\nAA\202+\314
\"\207" [this this-class slot defaults dflt slots 1 eieio-class-definition 5 6 eieio-default-eval-maybe eieio-oset shared-initialize] 5 "Construct the new object THIS based on SLOTS.\nSLOTS is a tagged list where odd numbered elements are tags, and\neven numbered elements are the values to store in the tagged slot.\nIf you overload the `initialize-instance', there you will need to\ncall `shared-initialize' yourself, or you can call `call-next-method'\nto have this constructor called automatically.  If these steps are\nnot taken, then new objects of your class will not have their values\ndynamically set from SLOTS."]([object esup-result :file "" 0 0 "" 0 0 0 0 0] ("/home/jez/.dotfiles/emacs.d/init.el" :expression-string #("(setq dotfiles-dir (file-name-directory (or (buffer-file-name) load-file-name)))" 0 80 (fontified nil)) :start-point 228 :end-point 308 :line-number 7 :exec-time 1.7223e-05 :gc-number 0 :gc-time 0.0))
  apply(#[(this &optional slots) "\306H\307N\211\310H \311H\n\203/\312@!\211@=\204%\313\n@\f#\210)\nAA\202+\314
\"\207" [this this-class slot defaults dflt slots 1 eieio-class-definition 5 6 eieio-default-eval-maybe eieio-oset shared-initialize] 5 "Construct the new object THIS based on SLOTS.\nSLOTS is a tagged list where odd numbered elements are tags, and\neven numbered elements are the values to store in the tagged slot.\nIf you overload the `initialize-instance', there you will need to\ncall `shared-initialize' yourself, or you can call `call-next-method'\nto have this constructor called automatically.  If these steps are\nnot taken, then new objects of your class will not have their values\ndynamically set from SLOTS."] ([object esup-result :file "" 0 0 "" 0 0 0 0 0] ("/home/jez/.dotfiles/emacs.d/init.el" :expression-string #("(setq dotfiles-dir (file-name-directory (or (buffer-file-name) load-file-name)))" 0 80 (fontified nil)) :start-point 228 :end-point 308 :line-number 7 :exec-time 1.7223e-05 :gc-number 0 :gc-time 0.0)))
  initialize-instance([object esup-result :file "" 0 0 "" 0 0 0 0 0] ("/home/jez/.dotfiles/emacs.d/init.el" :expression-string #("(setq dotfiles-dir (file-name-directory (or (buffer-file-name) load-file-name)))" 0 80 (fontified nil)) :start-point 228 :end-point 308 :line-number 7 :exec-time 1.7223e-05 :gc-number 0 :gc-time 0.0))
  eieio-default-superclass(esup-result :file "/home/jez/.dotfiles/emacs.d/init.el" :expression-string #("(setq dotfiles-dir (file-name-directory (or (buffer-file-name) load-file-name)))" 0 80 (fontified nil)) :start-point 228 :end-point 308 :line-number 7 :exec-time 1.7223e-05 :gc-number 0 :gc-time 0.0)
  apply(eieio-default-superclass (esup-result :file "/home/jez/.dotfiles/emacs.d/init.el" :expression-string #("(setq dotfiles-dir (file-name-directory (or (buffer-file-name) load-file-name)))" 0 80 (fontified nil)) :start-point 228 :end-point 308 :line-number 7 :exec-time 1.7223e-05 :gc-number 0 :gc-time 0.0))
  eieio-generic-call(constructor (esup-result :file "/home/jez/.dotfiles/emacs.d/init.el" :expression-string #("(setq dotfiles-dir (file-name-directory (or (buffer-file-name) load-file-name)))" 0 80 (fontified nil)) :start-point 228 :end-point 308 :line-number 7 :exec-time 1.7223e-05 :gc-number 0 :gc-time 0.0))
  constructor(esup-result :file "/home/jez/.dotfiles/emacs.d/init.el" :expression-string #("(setq dotfiles-dir (file-name-directory (or (buffer-file-name) load-file-name)))" 0 80 (fontified nil)) :start-point 228 :end-point 308 :line-number 7 :exec-time 1.7223e-05 :gc-number 0 :gc-time 0.0)
  apply(constructor esup-result :file ("/home/jez/.dotfiles/emacs.d/init.el" :expression-string #("(setq dotfiles-dir (file-name-directory (or (buffer-file-name) load-file-name)))" 0 80 (fontified nil)) :start-point 228 :end-point 308 :line-number 7 :exec-time 1.7223e-05 :gc-number 0 :gc-time 0.0))
  esup-result(:file "/home/jez/.dotfiles/emacs.d/init.el" :expression-string #("(setq dotfiles-dir (file-name-directory (or (buffer-file-name) load-file-name)))" 0 80 (fontified nil)) :start-point 228 :end-point 308 :line-number 7 :exec-time 1.7223e-05 :gc-number 0 :gc-time 0.0)
  esup-child-profile-sexp(228 308 0)
  esup-child-profile-buffer(#<buffer init.el> 0)
  esup-child-profile-file("/home/jez/.emacs.d/init.el" 0)
  esup-child-run("/home/jez/.emacs.d/init.el" "57397")
  eval((esup-child-run "/home/jez/.emacs.d/init.el" "57397"))
  command-line-1(("-L" "/home/jez/.dotfiles/emacs.d/el-get/esup/" "-l" "esup-child" "--eval=(esup-child-run \"/home/jez/.emacs.d/init.el\" \"57397\")"))
  command-line()
  normal-top-level()

It seems the object-name argument for an EIEIO constructor is mandatory.

By the way, if I revert this commit, then the fix for #23 works perfectly — thanks :smile:

jschaf commented 9 years ago

Yea, I saw the build break. Emacs 25 complains about the string and Emacs 24 breaks without it. I'll revert it