]> git.eshelyaron.com Git - emacs.git/commitdiff
semantic: Add support for typedef references
authorDavid Engster <deng@randomsample.de>
Sun, 25 Jan 2015 22:10:13 +0000 (23:10 +0100)
committerDavid Engster <deng@randomsample.de>
Thu, 19 Jan 2017 21:39:08 +0000 (22:39 +0100)
* admin/grammars/c.by (typedefname): Also parse optional reference
  qualifier.

* lisp/cedet/semantic/bovine/c.el (semantic-expand-c-tag-namelist):
  Add :reference attribute for typedefs.

admin/grammars/c.by
lisp/cedet/semantic/bovine/c.el

index c312fd636df16db109fd53d4eccf48e1f9b9d111..b8c150a9e6ce5001b89d8a223ed547cd124f26c7 100644 (file)
@@ -450,8 +450,8 @@ typedef-symbol-list
 ;; TODO: Klaus Berndl: symbol -> namespace-symbol?!  Answer: Probably
 ;; symbol is correct here!
 typedefname
-  : opt-stars symbol opt-bits opt-array
-    ( $1 $2 )
+  : opt-stars opt-ref symbol opt-bits opt-array
+    ( $1 $2 $3 )
   ;
 
 struct-or-class
index 5d7d5a6af5ffe9429a952f92e633240b5b68a28c..47a54579956742dca6bbf47c70f7740be92b1829 100644 (file)
@@ -1187,13 +1187,16 @@ is its own toplevel tag.  This function will return (cons A B)."
           (while names
 
             (setq vl (cons (semantic-tag-new-type
-                            (nth 1 (car names)) ; name
+                            (nth 2 (car names)) ; name
                             "typedef"
                             (semantic-tag-type-members tag)
                             nil
                             :pointer
                             (let ((stars (car (car (car names)))))
                               (if (= stars 0) nil stars))
+                            :reference
+                            (let ((refs (car (nth 1 (car names)))))
+                              (when (> refs 0) refs))
                             ;; This specifies what the typedef
                             ;; is expanded out as.  Just the
                             ;; name shows up as a parent of this