Subject: bug#28448: 26.0.50; js-mode missing some functions for imenu

From: Tom Tromey <[email-masked]>
Date: Wed, 13 Sep 2017 11:54:30 -0600

Consider this pared-down but relatively normal js file:

================================================================
function StyleSheetEditor(styleSheet, win, file, isNew, walker, highlighter) {
}
StyleSheetEditor.prototype = {
    get unsaved() {
    },
    updateLinkedStyleSheet: function () {
    },
    checkLinkedFileForChanges: function () {
	this.unsaved().updateLinkedStyleSheet();
    },
}
================================================================

Here it would be great to have imenu entries for "unsaved" and
"updateLinkedStyleSheet".

Currently js-mode doesn't find these.

Tom

In GNU Emacs 26.0.50 (build 8, x86_64-pc-linux-gnu, GTK+ Version 3.22.17)
 of 2017-08-28 built on pokyo
Repository revision: 433cf5b2046f9b0a9f500dae1d072cc53f2a3c10
Windowing system distributor 'Fedora Project', version 11.0.11903000
System Description:	Fedora release 25 (Twenty Five)

Recent messages:
funcall-interactively: End of buffer
Saving file /tmp/r.js...
Wrote /tmp/r.js
No more miss-spelled word!
C-x C-g is undefined
imenu-find-default: Wrong type argument: stringp, nil
Undo! [2 times]
imenu-find-default: Wrong type argument: stringp, nil
Saving file /tmp/r.js...
Wrote /tmp/r.js

Configured using:
 'configure --prefix=/home/tromey/Emacs/install --with-modules'

Configured features:
XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND DBUS GSETTINGS NOTIFY
LIBSELINUX GNUTLS LIBXML2 FREETYPE LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS
GTK3 X11 MODULES LIBSYSTEMD

Important settings:
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix

Major mode: JS

Minor modes in effect:
  erc-spelling-mode: t
  erc-truncate-mode: t
  shell-dirtrack-mode: t
  diff-auto-refine-mode: t
  flyspell-mode: t
  which-function-mode: t
  projectile-global-mode: t
  projectile-mode: t
  erc-notify-mode: t
  erc-notifications-mode: t
  erc-services-mode: t
  erc-list-mode: t
  erc-menu-mode: t
  erc-autojoin-mode: t
  erc-ring-mode: t
  erc-networks-mode: t
  erc-pcomplete-mode: t
  erc-track-mode: t
  erc-track-minor-mode: t
  erc-match-mode: t
  erc-netsplit-mode: t
  erc-hl-nicks-mode: t
  erc-button-mode: t
  erc-fill-mode: t
  erc-stamp-mode: t
  erc-irccontrols-mode: t
  erc-noncommands-mode: t
  erc-move-to-prompt-mode: t
  erc-readonly-mode: t
  flycheck-mode: t
  savehist-mode: t
  cl-old-struct-compat-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  column-number-mode: t
  line-number-mode: t
  auto-fill-function: js-do-auto-fill
  transient-mark-mode: t

Load-path shadows:
/home/tromey/.emacs.d/elpa/bubbles-0.5/bubbles hides /home/tromey/Emacs/install/share/emacs/26.0.50/lisp/play/bubbles

Features:
(shadow emacsbug thai-util thai-word gud python tramp-sh nnregistry
sh-script executable make-mode ix grapnel footnote cl-print debug
url-about url-dav url-dired webjump org-rmail org-mhe org-irc org-info
org-gnus org-docview doc-view image-mode org-bibtex bibtex org-bbdb
org-w3m org-element avl-tree generator org org-macro org-footnote
org-pcomplete org-list org-faces org-entities noutline outline
org-version ob-emacs-lisp ob ob-tangle org-src ob-ref ob-lob ob-table
ob-keys ob-exp ob-comint ob-core ob-eval org-compat org-macs
org-loaddefs cursor-sensor mhtml-mode novice mode-local descr-text
iso-transl tabify man eieio-opt speedbar sb-image ezimage dframe ffap
gnus-fun idutils find-file erc-spelling erc-truncate mailalias bbdb-sc
supercite regi mail-hist nnir js cc-mode cc-fonts cc-guess cc-menus
cc-cmds gnus-html help-fns radix-tree url-cache css-mode smie sgml-mode
eww url-queue gnus-draft git-rebase-mode vc-annotate tramp tramp-compat
tramp-loaddefs trampver ucs-normalize jka-compr flow-fill url-http
url-auth url-gw bbdb-gui bbdb-hooks bbdb-rmail rmailsum vc-mtn vc-hg
sort gnus-cite smiley shr-color shr svg dom mm-archive gnus-bcklg
git-commit-mode log-edit term/xterm xterm gnus-async qp gnus-ml
disp-table gnus-topic nndraft nnmh nnfolder utf-7 bbdb-gnus bbdb-snarf
mail-extr bbdb-com network-stream nsm starttls gnus-agent gnus-srvr
gnus-score score-mode nnvirtual gnus-msg nntp gnus-cache gnus-registry
registry eieio-base gnus-art mm-uu mml2015 mm-view mml-smime smime dig
gnus-sum gnus-group gnus-undo smtpmail sendmail gnus-start gnus-cloud
nnimap nnmail mail-source tls gnutls utf7 netrc nnoo parse-time
gnus-spec gnus-int gnus-range message puny rfc822 mml mml-sec epa
derived epg mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev
gmm-utils mailheader gnus-win conf-mode etags xref project shell
browse-url dxr mm-url url url-proxy url-privacy url-expand url-methods
url-history url-cookie url-domsuf url-util mailcap gnus nnheader
gnus-util rmail rmail-loaddefs rfc2047 rfc2045 ietf-drums mail-utils
mm-util mail-prsvr bug-reference copyright find-dired dabbrev misearch
multi-isearch smerge-mode log-view pcvs-util vc-bzr vc-src vc-sccs
vc-svn vc-cvs vc-rcs add-log vc-git diff-mode rust-mode elec-pair
flyspell ispell diminish appt diary-lib diary-loaddefs cal-menu calendar
cal-loaddefs which-func imenu edmacro kmacro projectile grep compile
ibuf-ext ibuffer ibuffer-loaddefs autorevert filenotify desktop frameset
cus-start cus-load erc-notify erc-desktop-notifications erc-services
notifications dbus xml erc-list erc-menu erc-join erc-ring erc-networks
erc-pcomplete pcomplete erc-track erc-match erc-netsplit erc-hl-nicks
easy-mmode color erc-button erc-fill erc-stamp wid-edit erc-goodies erc
erc-backend erc-compat format-spec thingatpt pp dired-aux dired-x dired
dired-loaddefs warnings advice vc-dir ewoc vc vc-dispatcher flycheck
cl-extra json map find-func help-mode rx subr-x dash cc-styles cc-align
cc-engine cc-vars cc-defs bbdb cl timezone ange-ftp comint ansi-color
ring server savehist finder-inf bbdb-autoloads dwarf-mode-autoloads
lisppaste-autoloads pydoc-info-autoloads info-look weblogger-autoloads
info package easymenu epg-config url-handlers url-parse auth-source
cl-seq eieio eieio-core cl-macs eieio-loaddefs password-cache url-vars
seq byte-opt gv bytecomp byte-compile cconv cl-loaddefs cl-lib time-date
mule-util tooltip eldoc electric uniquify ediff-hook vc-hooks
lisp-float-type mwheel term/x-win x-win term/common-win x-dnd tool-bar
dnd fontset image regexp-opt fringe tabulated-list replace newcomment
text-mode elisp-mode lisp-mode prog-mode register page menu-bar
rfn-eshadow isearch timer select scroll-bar mouse jit-lock font-lock
syntax facemenu font-core term/tty-colors frame cl-generic cham georgian
utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean
japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european
ethiopic indian cyrillic chinese composite charscript charprop
case-table epa-hook jka-cmpr-hook help simple abbrev obarray minibuffer
cl-preloaded nadvice loaddefs button faces cus-face macroexp files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote dbusbind inotify
dynamic-setting system-font-setting font-render-setting move-toolbar gtk
x-toolkit x multi-tty make-network-process emacs)

Memory information:
((conses 16 5900075 3437281)
 (symbols 48 136519 43)
 (miscs 40 38707 31985)
 (strings 32 1568492 177118)
 (string-bytes 1 69419422)
 (vectors 16 226053)
 (vector-slots 8 5530804 389348)
 (floats 8 915 3920)
 (intervals 56 475093 29216)
 (buffers 992 647))