Fix -Lmakefile LOCAL_JAVA_LIBRARIES does not include hierarchy.

Fix: 33249372

Test: update_makefiles.sh
Change-Id: I03f4197ce85adae764eda8ed303e47fa00fc881c
diff --git a/AST.cpp b/AST.cpp
index 5d286ed..eaa3141 100644
--- a/AST.cpp
+++ b/AST.cpp
@@ -457,6 +457,17 @@
     }
 }
 
+void AST::getImportedPackagesHierarchy(std::set<FQName> *importSet) const {
+    getImportedPackages(importSet);
+    std::set<FQName> newSet;
+    for (const auto &ast : mImportedASTs) {
+        if (importSet->find(ast->package()) != importSet->end()) {
+            ast->getImportedPackagesHierarchy(&newSet);
+        }
+    }
+    importSet->insert(newSet.begin(), newSet.end());
+}
+
 bool AST::isJavaCompatible() const {
     std::string ifaceName;
     if (!AST::isInterface(&ifaceName)) {
diff --git a/AST.h b/AST.h
index 96abed7..dc5a7e2 100644
--- a/AST.h
+++ b/AST.h
@@ -90,6 +90,10 @@
 
     void getImportedPackages(std::set<FQName> *importSet) const;
 
+    // Run getImportedPackages on this, then run getImportedPackages on
+    // each AST in each package referenced in importSet.
+    void getImportedPackagesHierarchy(std::set<FQName> *importSet) const;
+
     status_t generateVts(const std::string &outputPath) const;
 
     bool isJavaCompatible() const;
diff --git a/main.cpp b/main.cpp
index 5e17086..c33ce5e 100644
--- a/main.cpp
+++ b/main.cpp
@@ -419,7 +419,7 @@
             typesAST = ast;
         }
 
-        ast->getImportedPackages(&importedPackages);
+        ast->getImportedPackagesHierarchy(&importedPackages);
         ast->appendToExportedTypesVector(&exportedTypes);
     }