hidl-gen: Fix warnings for unused parameters.
Test: `mma` does not have warnings on unused paramters
on GraphAll.cpp.
Change-Id: Ib4ddd38c34f1de5aef1cdefdfa0539840fb44a8e
diff --git a/CompoundType.cpp b/CompoundType.cpp
index 11dd68a..2e2db7e 100644
--- a/CompoundType.cpp
+++ b/CompoundType.cpp
@@ -654,17 +654,31 @@
<< (prefix.empty() ? "" : (prefix + "::"))
<< localName();
+
+ bool useParent = false;
+ for (const auto &field : *mFields) {
+ if (field->type().useParentInEmitResolveReferencesEmbedded()) {
+ useParent = true;
+ break;
+ }
+ }
+
+ std::string parentHandleName = useParent ? "parentHandle" : "/* parentHandle */";
+ std::string parentOffsetName = useParent ? "parentOffset" : "/* parentOffset */";
+
if (isReader) {
out << "::readEmbeddedReferenceFromParcel(\n";
out.indent(); out.indent();
out << "const ::android::hardware::Parcel &parcel,\n"
- << "size_t parentHandle, size_t parentOffset)\n";
+ << "size_t " << parentHandleName << ", "
+ << "size_t " << parentOffsetName << ")\n";
out.unindent(); out.unindent();
} else {
out << "::writeEmbeddedReferenceToParcel(\n";
out.indent(); out.indent();
out << "::android::hardware::Parcel *parcel,\n"
- << "size_t parentHandle, size_t parentOffset) const\n";
+ << "size_t " << parentHandleName << ", "
+ << "size_t " << parentOffsetName << ") const\n";
out.unindent(); out.unindent();
}
@@ -674,6 +688,10 @@
out << "::android::status_t _hidl_err = ::android::OK;\n\n";
+ // if not useParent, then parentName and offsetText
+ // should not be used at all, then the #error should not be emitted.
+ std::string error = useParent ? "" : "\n#error\n";
+
for (const auto &field : *mFields) {
if (!field->type().needsResolveReferences()) {
continue;
@@ -689,12 +707,14 @@
!isReader, // bool parcelObjIsPointer,
isReader, // bool isReader,
ErrorMode_Return,
- "parentHandle",
- "parentOffset + offsetof("
+ parentHandleName + error,
+ parentOffsetName
+ + " + offsetof("
+ fullName()
+ ", "
+ field->name()
- + ")"); // ErrorMode mode
+ + ")"
+ + error);
}
out.unindent();
diff --git a/Type.cpp b/Type.cpp
index 0b2b715..54f5956 100644
--- a/Type.cpp
+++ b/Type.cpp
@@ -146,6 +146,10 @@
CHECK(!"Should not be here");
}
+bool Type::useParentInEmitResolveReferencesEmbedded() const {
+ return true;
+}
+
void Type::emitReaderWriterEmbedded(
Formatter &,
size_t,
diff --git a/Type.h b/Type.h
index ce0d78f..b693b5f 100644
--- a/Type.h
+++ b/Type.h
@@ -140,6 +140,8 @@
const std::string &parentName,
const std::string &offsetText) const;
+ virtual bool useParentInEmitResolveReferencesEmbedded() const;
+
virtual void emitJavaReaderWriter(
Formatter &out,
const std::string &parcelObj,
diff --git a/VectorType.cpp b/VectorType.cpp
index 8bf3ede..b7bebe4 100644
--- a/VectorType.cpp
+++ b/VectorType.cpp
@@ -248,6 +248,11 @@
parcelObjIsPointer, isReader, mode, "", "");
}
+bool VectorType::useParentInEmitResolveReferencesEmbedded() const {
+ // parentName and offsetText is not used in emitResolveReferencesEmbedded
+ return false;
+}
+
void VectorType::emitResolveReferencesEmbeddedHelper(
Formatter &out,
size_t depth,
diff --git a/VectorType.h b/VectorType.h
index 3f3e7d3..7627509 100644
--- a/VectorType.h
+++ b/VectorType.h
@@ -77,6 +77,8 @@
const std::string &parentName,
const std::string &offsetText) const override;
+ bool useParentInEmitResolveReferencesEmbedded() const override;
+
void emitJavaReaderWriter(
Formatter &out,
const std::string &parcelObj,