Subject: bug#19206: closed (Re: bug#19206: 25.0.50; CC Mode tracks wrong source files)

From: [email-masked] (GNU bug Tracking System)
Date: Tue, 13 Jan 2015 16:11:02 +0000

Your bug report

#19206: 25.0.50; CC Mode tracks wrong source files

which was filed against the emacs,cc-mode package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
19206: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=19206
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#19206: 25.0.50; CC Mode tracks wrong source files
From: Alan Mackenzie <[email-masked]>
To: [email-masked]
Date: Tue, 13 Jan 2015 17:09:59 +0100 (CET)
List-Id: <debbugs-submit.debbugs.gnu.org>

In article <[email-masked]> you wrote:
> CC Mode tracks wrong source files when a CC Mode derived mode is
> installed non-interactively.

Bug fixed.

-- 
Alan Mackenzie (Nuremberg, Germany).

Subject: 25.0.50; CC Mode tracks wrong source files
From: Sebastian Wiesner <[email-masked]>
To: [email-masked]
Date: Fri, 28 Nov 2014 11:19:01 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

CC Mode tracks wrong source files when a CC Mode derived mode is
installed non-interactively.

To reproduce, save the following code as `cc-miscompile.el'

(require 'package)
(require 'cc-defs)

(defun main ()
  (add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/"))

  (setq package-user-dir (make-temp-file "cc-miscompile" 'directory))

  (package-initialize)
  (package-refresh-contents)
  (package-install 'd-mode)

  (require 'd-mode)

  (let ((source (get (intern "c-typedef-decl-kwds" c-lang-constants) 'source)))
    (message "Sources: %S" (mapcar 'car source)))

  (delete-directory package-user-dir 'recursive))

(main)

and run it with `emacs -Q --script cc-miscompile.el'.  The output is as
follows (package.el output shortened for readility):

Contacting host: melpa.org:80
Contacting host: elpa.gnu.org:80
[…]
Sources: (d-mode cc-miscompile cc-langs)

Note that `cc-miscompile' ends up in the source list of
`c-typedef-decl-kwds', even though it never actually calls any `c-*'
functions at all.

Naturally, CC Mode will later try to load this file, and fail if it is
not in the `load-path'.  This effectively breaks installations of D
Mode from non-interactive Emacs sessions.

I did not try to find the culprit.  The CC Mode code is convoluted
beyond my understanding.