]> code.delx.au - gnu-emacs/blobdiff - lisp/cedet/semantic/db-typecache.el
Merge from origin/emacs-24
[gnu-emacs] / lisp / cedet / semantic / db-typecache.el
index 4698949b5e0d8d578e45af9070b2914d2f611e5b..723b7bd28bc8d85d0093b3a1ff5a0351dd7ea498 100644 (file)
@@ -1,6 +1,6 @@
 ;;; semantic/db-typecache.el --- Manage Datatypes
 
-;; Copyright (C) 2007-2012 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2015 Free Software Foundation, Inc.
 
 ;; Author: Eric M. Ludlam <eric@siege-engine.com>
 
@@ -180,7 +180,7 @@ If there is no table, create one, and fill it in."
 (defmethod semanticdb-get-typecache ((db semanticdb-project-database))
   "Retrieve the typecache from the semantic database DB.
 If there is no table, create one, and fill it in."
-  (semanticdb-cache-get db semanticdb-database-typecache)
+  (semanticdb-cache-get db 'semanticdb-database-typecache)
   )
 
 \f
@@ -483,6 +483,11 @@ found tag to be loaded."
            (setq ans nil)))
        )
 
+      ;; The typecache holds all the known types and elements.  Some databases
+      ;; may provide tags that are simplified by name, and are proxies.  These
+      ;; proxies must be resolved in order to extract type members.
+      (setq ans (semantic-tag-resolve-proxy ans))
+
       (push ans calculated-scope)
 
       ;; Track most recent file.
@@ -577,7 +582,11 @@ If there isn't one, create it.
   (interactive)
   (let* ((path (semanticdb-find-translate-path nil nil)))
     (dolist (P path)
-      (oset P pointmax nil)
+      (condition-case nil
+         (oset P pointmax nil)
+       ;; Pointmax may not exist for all tables discovered in the
+       ;; path.
+       (error nil))
       (semantic-reset (semanticdb-get-typecache P)))))
 
 (defun semanticdb-typecache-dump ()