diff src/symtab.h @ 12130:3229572cbe23

symbol_table::parent_classes: also add parents of parents to the list
author John W. Eaton <jwe@octave.org>
date Sat, 22 Jan 2011 12:55:18 -0500
parents f4689107dd8c
children d6151d774283
line wrap: on
line diff
--- a/src/symtab.h
+++ b/src/symtab.h
@@ -1866,6 +1866,19 @@
     if (it != parent_map.end ())
       retval = it->second;
 
+    for (std::list<std::string>::const_iterator lit = retval.begin ();
+         lit != retval.end (); lit++)
+      {
+        // Search for parents of parents and append them to the list.
+
+        // FIXME -- should we worry about a circular inheritance graph?
+
+        std::list<std::string> parents = parent_classes (*lit);
+
+        if (! parents.empty ())
+          retval.insert (retval.end (), parents.begin (), parents.end ());
+      }
+
     return retval;
   }