return_status::checkStatus => assertOk
checkStatus doesn't really set mCheckStatus to true, and hence is
a misnomer. Change it to assertOk (correspond to isOk()).
And hence the move assignment operator should not call checkStatus
(because it is valid to move into a Return<T> object that !isOk()
but has mCheckedStatus to true), because caller is fully aware of
the error that will be overwritten.
Test: libhidl_test
Change-Id: I86a44967b68619d1467d2cc9caaa39124b156121
diff --git a/test_main.cpp b/test_main.cpp
index 4f59371..27d62a0 100644
--- a/test_main.cpp
+++ b/test_main.cpp
@@ -334,6 +334,15 @@
EXPECT_TRUE(v3_0 >= v2_2);
}
+TEST_F(LibHidlTest, ReturnMoveTest) {
+ using namespace ::android;
+ using ::android::hardware::Return;
+ using ::android::hardware::Status;
+ Return<void> ret{Status::fromStatusT(DEAD_OBJECT)};
+ ret.isOk();
+ ret = {Status::fromStatusT(DEAD_OBJECT)};
+ ret.isOk();
+}
int main(int argc, char **argv) {
::testing::InitGoogleTest(&argc, argv);