Allow compilation during loading of Modes derived from a CC Mode mode.
commit30c5f5cdef8db72c007efecfc8436479631b45d0
authorAlan Mackenzie <acm@muc.de>
Tue, 13 Jan 2015 15:39:36 +0000 (13 15:39 +0000)
committerAlan Mackenzie <acm@muc.de>
Tue, 13 Jan 2015 15:47:26 +0000 (13 15:47 +0000)
tree781d6e630b7efca6e0fef929a416bb79851949f5
parentc3024739131467b607fa745daf52ca25a3fd3c4d
Allow compilation during loading of Modes derived from a CC Mode mode.
Fixes debbugs#19206.

cc-bytecomp.el (cc-bytecomp-compiling-or-loading): new function which
walks the stack to discover whether we're compiling or loading.
(cc-bytecomp-is-compiling): Reformulate, and move towards beginning.
(cc-bytecomp-is-loading): New defsubst.
(cc-bytecomp-setup-environment, cc-bytecomp-restore-environment): Use
the
above defsubsts.
(cc-require-when-compile, cc-bytecomp-defvar)
(cc-bytecomp-defun): Simplify conditionals.

cc-defs.el (cc-bytecomp-compiling-or-loading): "Borrow" this function
from cc-bytecomp.el.
(c-get-current-file): Reformulate using the above.
(c-lang-defconst): Prevent duplicate entries of file names in a symbol's
'source property.
(c-lang-const): Use cc-bytecomp-is-compiling.

cc-langs.el (c-make-init-lang-vars-fun): Use cc-bytecomp-is-compiling.
lisp/ChangeLog
lisp/progmodes/cc-bytecomp.el
lisp/progmodes/cc-defs.el
lisp/progmodes/cc-langs.el