AAPT2: Fix regression in Manifest.java permissions

Permissions defined with the same leaf name emit the same
string symbol, which causes collisions. AAPT would override
the symbol with the last one seen.

Do the same thing as AAPT, but emit a warning.

Bug: 64472942
Test: make aapt2_tests
Change-Id: I17b9dc7e8d8bd80db98869394c93695cb453bebd
This commit is contained in:
Adam Lesinski
2017-08-18 19:49:58 -07:00
parent 668feb252a
commit f852dd0eb8
4 changed files with 84 additions and 10 deletions

View File

@@ -39,6 +39,17 @@ void MethodDefinition::WriteToStream(const StringPiece& prefix, bool final,
*out << prefix << "}";
}
ClassDefinition::Result ClassDefinition::AddMember(std::unique_ptr<ClassMember> member) {
Result result = Result::kAdded;
auto iter = members_.find(member);
if (iter != members_.end()) {
members_.erase(iter);
result = Result::kOverridden;
}
members_.insert(std::move(member));
return result;
}
bool ClassDefinition::empty() const {
for (const std::unique_ptr<ClassMember>& member : members_) {
if (!member->empty()) {