Allow method names, result names and argument names to be the same.
size(int32_t size) generates (int32_t size) is allowed.
result names and argument names themselves may still collide and
cause compilation error; for example, foo(int32_t bar, int32_t bar)
is not detected by hidl-gen.
Bug: 33277700
Test: compiles with mma (withe the new method added to IBar)
Change-Id: Ibfe6db03e2dff40f0cae1429fd94cd0db6ccb3a1
diff --git a/generateJava.cpp b/generateJava.cpp
index df2b1c0..9f3c0db 100644
--- a/generateJava.cpp
+++ b/generateJava.cpp
@@ -30,15 +30,19 @@
Formatter &out,
const std::string &parcelObj,
const TypedVar *arg,
- bool isReader) const {
+ bool isReader,
+ bool addPrefixToName) const {
if (isReader) {
out << arg->type().getJavaType()
<< " "
+ << (addPrefixToName ? "_hidl_out_" : "")
<< arg->name()
<< " = ";
}
- arg->type().emitJavaReaderWriter(out, parcelObj, arg->name(), isReader);
+ arg->type().emitJavaReaderWriter(out, parcelObj,
+ (addPrefixToName ? "_hidl_out_" : "") + arg->name(),
+ isReader);
}
status_t AST::generateJavaTypes(
@@ -319,7 +323,8 @@
out,
"_hidl_request",
arg,
- false /* isReader */);
+ false /* isReader */,
+ false /* addPrefixToName */);
}
out << "\nandroid.os.HwParcel _hidl_reply = new android.os.HwParcel();\n"
@@ -353,7 +358,8 @@
out,
"_hidl_reply",
arg,
- true /* isReader */);
+ true /* isReader */,
+ true /* addPrefixToName */);
}
if (needsCallback) {
@@ -365,14 +371,14 @@
out << ", ";
}
- out << arg->name();
+ out << "_hidl_out_" << arg->name();
firstField = false;
}
out << ");\n";
} else {
const std::string returnName = method->results()[0]->name();
- out << "return " << returnName << ";\n";
+ out << "return _hidl_out_" << returnName << ";\n";
}
}
@@ -468,14 +474,15 @@
out,
"_hidl_request",
arg,
- true /* isReader */);
+ true /* isReader */,
+ false /* addPrefixToName */);
}
if (!needsCallback && returnsValue) {
const TypedVar *returnArg = method->results()[0];
out << returnArg->type().getJavaType()
- << " "
+ << " _hidl_out_"
<< returnArg->name()
<< " = ";
}
@@ -515,7 +522,9 @@
out,
"_hidl_reply",
arg,
- false /* isReader */);
+ false /* isReader */,
+ false /* addPrefixToName */);
+ // no need to add _hidl_out because out vars are are scoped
}
out << "_hidl_reply.send();\n"
@@ -537,7 +546,8 @@
out,
"_hidl_reply",
returnArg,
- false /* isReader */);
+ false /* isReader */,
+ true /* addPrefixToName */);
}
out << "_hidl_reply.send();\n";