Support nested types in NdkFullClassName()
NdkFullClassName() is used in NDK backend to get a C++ type for
AidlDefinedType. Previously, it didn't care about nested types. Now it
returns ::aidl::my::pkg::ParentType::MyType.
Bug: 201730188
Test: aidl_unittests
Change-Id: Ib13389248152b3f9afa6f60d3702721a35d9954d
diff --git a/aidl_to_ndk.cpp b/aidl_to_ndk.cpp
index f535d10..49766e0 100644
--- a/aidl_to_ndk.cpp
+++ b/aidl_to_ndk.cpp
@@ -24,6 +24,7 @@
#include <functional>
using ::android::base::Join;
+using ::android::base::Split;
namespace android {
namespace aidl {
@@ -415,10 +416,10 @@
std::string NdkFullClassName(const AidlDefinedType& type, cpp::ClassNames name) {
std::vector<std::string> pieces = {"::aidl"};
- std::vector<std::string> package = type.GetSplitPackage();
- pieces.insert(pieces.end(), package.begin(), package.end());
- pieces.push_back(cpp::ClassName(type, name));
-
+ std::vector<std::string> split_name = Split(type.GetCanonicalName(), ".");
+ pieces.insert(pieces.end(), split_name.begin(), split_name.end());
+ // Override name part with cpp::ClassName(type, name)
+ pieces.back() = cpp::ClassName(type, name);
return Join(pieces, "::");
}