diff options
author | Andrew Walbran <qwandor@google.com> | 2024-01-25 16:35:27 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2024-01-25 16:35:27 +0000 |
commit | bfadd139147623b54a1ec27084c320fa9c2e3c16 (patch) | |
tree | 5dc985205b1721501e788b7863cd9b6671a1b622 | |
parent | c2f6f6b0f6345ddfb2325be288a37a07581a1c96 (diff) | |
parent | a748faddd96e867f3ce21be4354c8b5081573f3b (diff) | |
download | aidl-bfadd139147623b54a1ec27084c320fa9c2e3c16.tar.gz |
Revert "Use Option for unstructured parcelables." am: a748faddd9
Original change: https://android-review.googlesource.com/c/platform/system/tools/aidl/+/2827693
Change-Id: Ie5e76033a656ad69af4c4e0a567c6d0674e5fdf0
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r-- | aidl_to_rust.cpp | 9 | ||||
-rw-r--r-- | tests/golden_output/aidl-test-interface-rust-source/gen/android/aidl/tests/ITestService.rs | 23 | ||||
-rw-r--r-- | tests/golden_output/frozen/aidl-test-interface-rust-source/gen/android/aidl/tests/ITestService.rs | 23 | ||||
-rw-r--r-- | tests/rust/test_client.rs | 4 | ||||
-rw-r--r-- | tests/rust/test_service.rs | 4 | ||||
-rw-r--r-- | tests/rust/test_service_async.rs | 4 |
6 files changed, 28 insertions, 39 deletions
diff --git a/aidl_to_rust.cpp b/aidl_to_rust.cpp index aeb4b69d..eb8ee86d 100644 --- a/aidl_to_rust.cpp +++ b/aidl_to_rust.cpp @@ -389,15 +389,6 @@ bool TypeNeedsOption(const AidlTypeSpecifier& type, const AidlTypenames& typenam return true; } - // Unstructured parcelables may not implement Default. - const auto defined_type = type.GetDefinedType(); - if (defined_type != nullptr) { - const auto unstructured = AidlCast<AidlParcelable>(*defined_type); - if (unstructured != nullptr) { - return true; - } - } - return false; } diff --git a/tests/golden_output/aidl-test-interface-rust-source/gen/android/aidl/tests/ITestService.rs b/tests/golden_output/aidl-test-interface-rust-source/gen/android/aidl/tests/ITestService.rs index b5f76951..82244e2b 100644 --- a/tests/golden_output/aidl-test-interface-rust-source/gen/android/aidl/tests/ITestService.rs +++ b/tests/golden_output/aidl-test-interface-rust-source/gen/android/aidl/tests/ITestService.rs @@ -81,7 +81,7 @@ pub trait ITestService: binder::Interface + Send { fn r#ReverseList(&self, _arg_list: &crate::mangled::_7_android_4_aidl_5_tests_13_RecursiveList) -> binder::Result<crate::mangled::_7_android_4_aidl_5_tests_13_RecursiveList>; fn r#ReverseIBinderArray(&self, _arg_input: &[binder::SpIBinder], _arg_repeated: &mut Vec<Option<binder::SpIBinder>>) -> binder::Result<Vec<binder::SpIBinder>>; fn r#ReverseNullableIBinderArray(&self, _arg_input: Option<&[Option<binder::SpIBinder>]>, _arg_repeated: &mut Option<Vec<Option<binder::SpIBinder>>>) -> binder::Result<Option<Vec<Option<binder::SpIBinder>>>>; - fn r#RepeatSimpleParcelable(&self, _arg_input: &simple_parcelable::SimpleParcelable, _arg_repeat: &mut Option<simple_parcelable::SimpleParcelable>) -> binder::Result<simple_parcelable::SimpleParcelable>; + fn r#RepeatSimpleParcelable(&self, _arg_input: &simple_parcelable::SimpleParcelable, _arg_repeat: &mut simple_parcelable::SimpleParcelable) -> binder::Result<simple_parcelable::SimpleParcelable>; fn r#ReverseSimpleParcelables(&self, _arg_input: &[simple_parcelable::SimpleParcelable], _arg_repeated: &mut Vec<simple_parcelable::SimpleParcelable>) -> binder::Result<Vec<simple_parcelable::SimpleParcelable>>; fn r#GetOldNameInterface(&self) -> binder::Result<binder::Strong<dyn crate::mangled::_7_android_4_aidl_5_tests_8_IOldName>>; fn r#GetNewNameInterface(&self) -> binder::Result<binder::Strong<dyn crate::mangled::_7_android_4_aidl_5_tests_8_INewName>>; @@ -161,7 +161,7 @@ pub trait ITestServiceAsync<P>: binder::Interface + Send { fn r#ReverseList<'a>(&'a self, _arg_list: &'a crate::mangled::_7_android_4_aidl_5_tests_13_RecursiveList) -> binder::BoxFuture<'a, binder::Result<crate::mangled::_7_android_4_aidl_5_tests_13_RecursiveList>>; fn r#ReverseIBinderArray<'a>(&'a self, _arg_input: &'a [binder::SpIBinder], _arg_repeated: &'a mut Vec<Option<binder::SpIBinder>>) -> binder::BoxFuture<'a, binder::Result<Vec<binder::SpIBinder>>>; fn r#ReverseNullableIBinderArray<'a>(&'a self, _arg_input: Option<&'a [Option<binder::SpIBinder>]>, _arg_repeated: &'a mut Option<Vec<Option<binder::SpIBinder>>>) -> binder::BoxFuture<'a, binder::Result<Option<Vec<Option<binder::SpIBinder>>>>>; - fn r#RepeatSimpleParcelable<'a>(&'a self, _arg_input: &'a simple_parcelable::SimpleParcelable, _arg_repeat: &'a mut Option<simple_parcelable::SimpleParcelable>) -> binder::BoxFuture<'a, binder::Result<simple_parcelable::SimpleParcelable>>; + fn r#RepeatSimpleParcelable<'a>(&'a self, _arg_input: &'a simple_parcelable::SimpleParcelable, _arg_repeat: &'a mut simple_parcelable::SimpleParcelable) -> binder::BoxFuture<'a, binder::Result<simple_parcelable::SimpleParcelable>>; fn r#ReverseSimpleParcelables<'a>(&'a self, _arg_input: &'a [simple_parcelable::SimpleParcelable], _arg_repeated: &'a mut Vec<simple_parcelable::SimpleParcelable>) -> binder::BoxFuture<'a, binder::Result<Vec<simple_parcelable::SimpleParcelable>>>; fn r#GetOldNameInterface<'a>(&'a self) -> binder::BoxFuture<'a, binder::Result<binder::Strong<dyn crate::mangled::_7_android_4_aidl_5_tests_8_IOldName>>>; fn r#GetNewNameInterface<'a>(&'a self) -> binder::BoxFuture<'a, binder::Result<binder::Strong<dyn crate::mangled::_7_android_4_aidl_5_tests_8_INewName>>>; @@ -236,7 +236,7 @@ pub trait ITestServiceAsyncServer: binder::Interface + Send { async fn r#ReverseList(&self, _arg_list: &crate::mangled::_7_android_4_aidl_5_tests_13_RecursiveList) -> binder::Result<crate::mangled::_7_android_4_aidl_5_tests_13_RecursiveList>; async fn r#ReverseIBinderArray(&self, _arg_input: &[binder::SpIBinder], _arg_repeated: &mut Vec<Option<binder::SpIBinder>>) -> binder::Result<Vec<binder::SpIBinder>>; async fn r#ReverseNullableIBinderArray(&self, _arg_input: Option<&[Option<binder::SpIBinder>]>, _arg_repeated: &mut Option<Vec<Option<binder::SpIBinder>>>) -> binder::Result<Option<Vec<Option<binder::SpIBinder>>>>; - async fn r#RepeatSimpleParcelable(&self, _arg_input: &simple_parcelable::SimpleParcelable, _arg_repeat: &mut Option<simple_parcelable::SimpleParcelable>) -> binder::Result<simple_parcelable::SimpleParcelable>; + async fn r#RepeatSimpleParcelable(&self, _arg_input: &simple_parcelable::SimpleParcelable, _arg_repeat: &mut simple_parcelable::SimpleParcelable) -> binder::Result<simple_parcelable::SimpleParcelable>; async fn r#ReverseSimpleParcelables(&self, _arg_input: &[simple_parcelable::SimpleParcelable], _arg_repeated: &mut Vec<simple_parcelable::SimpleParcelable>) -> binder::Result<Vec<simple_parcelable::SimpleParcelable>>; async fn r#GetOldNameInterface(&self) -> binder::Result<binder::Strong<dyn crate::mangled::_7_android_4_aidl_5_tests_8_IOldName>>; async fn r#GetNewNameInterface(&self) -> binder::Result<binder::Strong<dyn crate::mangled::_7_android_4_aidl_5_tests_8_INewName>>; @@ -451,7 +451,7 @@ impl BnTestService { fn r#ReverseNullableIBinderArray(&self, _arg_input: Option<&[Option<binder::SpIBinder>]>, _arg_repeated: &mut Option<Vec<Option<binder::SpIBinder>>>) -> binder::Result<Option<Vec<Option<binder::SpIBinder>>>> { self._rt.block_on(self._inner.r#ReverseNullableIBinderArray(_arg_input, _arg_repeated)) } - fn r#RepeatSimpleParcelable(&self, _arg_input: &simple_parcelable::SimpleParcelable, _arg_repeat: &mut Option<simple_parcelable::SimpleParcelable>) -> binder::Result<simple_parcelable::SimpleParcelable> { + fn r#RepeatSimpleParcelable(&self, _arg_input: &simple_parcelable::SimpleParcelable, _arg_repeat: &mut simple_parcelable::SimpleParcelable) -> binder::Result<simple_parcelable::SimpleParcelable> { self._rt.block_on(self._inner.r#RepeatSimpleParcelable(_arg_input, _arg_repeat)) } fn r#ReverseSimpleParcelables(&self, _arg_input: &[simple_parcelable::SimpleParcelable], _arg_repeated: &mut Vec<simple_parcelable::SimpleParcelable>) -> binder::Result<Vec<simple_parcelable::SimpleParcelable>> { @@ -667,7 +667,7 @@ pub trait ITestServiceDefault: Send + Sync { fn r#ReverseNullableIBinderArray(&self, _arg_input: Option<&[Option<binder::SpIBinder>]>, _arg_repeated: &mut Option<Vec<Option<binder::SpIBinder>>>) -> binder::Result<Option<Vec<Option<binder::SpIBinder>>>> { Err(binder::StatusCode::UNKNOWN_TRANSACTION.into()) } - fn r#RepeatSimpleParcelable(&self, _arg_input: &simple_parcelable::SimpleParcelable, _arg_repeat: &mut Option<simple_parcelable::SimpleParcelable>) -> binder::Result<simple_parcelable::SimpleParcelable> { + fn r#RepeatSimpleParcelable(&self, _arg_input: &simple_parcelable::SimpleParcelable, _arg_repeat: &mut simple_parcelable::SimpleParcelable) -> binder::Result<simple_parcelable::SimpleParcelable> { Err(binder::StatusCode::UNKNOWN_TRANSACTION.into()) } fn r#ReverseSimpleParcelables(&self, _arg_input: &[simple_parcelable::SimpleParcelable], _arg_repeated: &mut Vec<simple_parcelable::SimpleParcelable>) -> binder::Result<Vec<simple_parcelable::SimpleParcelable>> { @@ -2001,13 +2001,13 @@ impl BpTestService { _aidl_reply.read_onto(_arg_repeated)?; Ok(_aidl_return) } - fn build_parcel_RepeatSimpleParcelable(&self, _arg_input: &simple_parcelable::SimpleParcelable, _arg_repeat: &mut Option<simple_parcelable::SimpleParcelable>) -> binder::Result<binder::binder_impl::Parcel> { + fn build_parcel_RepeatSimpleParcelable(&self, _arg_input: &simple_parcelable::SimpleParcelable, _arg_repeat: &mut simple_parcelable::SimpleParcelable) -> binder::Result<binder::binder_impl::Parcel> { let mut aidl_data = self.binder.prepare_transact()?; aidl_data.mark_sensitive(); aidl_data.write(_arg_input)?; Ok(aidl_data) } - fn read_response_RepeatSimpleParcelable(&self, _arg_input: &simple_parcelable::SimpleParcelable, _arg_repeat: &mut Option<simple_parcelable::SimpleParcelable>, _aidl_reply: std::result::Result<binder::binder_impl::Parcel, binder::StatusCode>) -> binder::Result<simple_parcelable::SimpleParcelable> { + fn read_response_RepeatSimpleParcelable(&self, _arg_input: &simple_parcelable::SimpleParcelable, _arg_repeat: &mut simple_parcelable::SimpleParcelable, _aidl_reply: std::result::Result<binder::binder_impl::Parcel, binder::StatusCode>) -> binder::Result<simple_parcelable::SimpleParcelable> { if let Err(binder::StatusCode::UNKNOWN_TRANSACTION) = _aidl_reply { if let Some(_aidl_default_impl) = <Self as ITestService>::getDefaultImpl() { return _aidl_default_impl.r#RepeatSimpleParcelable(_arg_input, _arg_repeat); @@ -2456,7 +2456,7 @@ impl ITestService for BpTestService { let _aidl_reply = self.binder.submit_transact(transactions::r#ReverseNullableIBinderArray, _aidl_data, binder::binder_impl::FLAG_CLEAR_BUF | binder::binder_impl::FLAG_PRIVATE_LOCAL); self.read_response_ReverseNullableIBinderArray(_arg_input, _arg_repeated, _aidl_reply) } - fn r#RepeatSimpleParcelable(&self, _arg_input: &simple_parcelable::SimpleParcelable, _arg_repeat: &mut Option<simple_parcelable::SimpleParcelable>) -> binder::Result<simple_parcelable::SimpleParcelable> { + fn r#RepeatSimpleParcelable(&self, _arg_input: &simple_parcelable::SimpleParcelable, _arg_repeat: &mut simple_parcelable::SimpleParcelable) -> binder::Result<simple_parcelable::SimpleParcelable> { let _aidl_data = self.build_parcel_RepeatSimpleParcelable(_arg_input, _arg_repeat)?; let _aidl_reply = self.binder.submit_transact(transactions::r#RepeatSimpleParcelable, _aidl_data, binder::binder_impl::FLAG_CLEAR_BUF | binder::binder_impl::FLAG_PRIVATE_LOCAL); self.read_response_RepeatSimpleParcelable(_arg_input, _arg_repeat, _aidl_reply) @@ -3299,7 +3299,7 @@ impl<P: binder::BinderAsyncPool> ITestServiceAsync<P> for BpTestService { } ) } - fn r#RepeatSimpleParcelable<'a>(&'a self, _arg_input: &'a simple_parcelable::SimpleParcelable, _arg_repeat: &'a mut Option<simple_parcelable::SimpleParcelable>) -> binder::BoxFuture<'a, binder::Result<simple_parcelable::SimpleParcelable>> { + fn r#RepeatSimpleParcelable<'a>(&'a self, _arg_input: &'a simple_parcelable::SimpleParcelable, _arg_repeat: &'a mut simple_parcelable::SimpleParcelable) -> binder::BoxFuture<'a, binder::Result<simple_parcelable::SimpleParcelable>> { let _aidl_data = match self.build_parcel_RepeatSimpleParcelable(_arg_input, _arg_repeat) { Ok(_aidl_data) => _aidl_data, Err(err) => return Box::pin(std::future::ready(Err(err))), @@ -3467,7 +3467,7 @@ impl ITestService for binder::binder_impl::Binder<BnTestService> { fn r#ReverseList(&self, _arg_list: &crate::mangled::_7_android_4_aidl_5_tests_13_RecursiveList) -> binder::Result<crate::mangled::_7_android_4_aidl_5_tests_13_RecursiveList> { self.0.r#ReverseList(_arg_list) } fn r#ReverseIBinderArray(&self, _arg_input: &[binder::SpIBinder], _arg_repeated: &mut Vec<Option<binder::SpIBinder>>) -> binder::Result<Vec<binder::SpIBinder>> { self.0.r#ReverseIBinderArray(_arg_input, _arg_repeated) } fn r#ReverseNullableIBinderArray(&self, _arg_input: Option<&[Option<binder::SpIBinder>]>, _arg_repeated: &mut Option<Vec<Option<binder::SpIBinder>>>) -> binder::Result<Option<Vec<Option<binder::SpIBinder>>>> { self.0.r#ReverseNullableIBinderArray(_arg_input, _arg_repeated) } - fn r#RepeatSimpleParcelable(&self, _arg_input: &simple_parcelable::SimpleParcelable, _arg_repeat: &mut Option<simple_parcelable::SimpleParcelable>) -> binder::Result<simple_parcelable::SimpleParcelable> { self.0.r#RepeatSimpleParcelable(_arg_input, _arg_repeat) } + fn r#RepeatSimpleParcelable(&self, _arg_input: &simple_parcelable::SimpleParcelable, _arg_repeat: &mut simple_parcelable::SimpleParcelable) -> binder::Result<simple_parcelable::SimpleParcelable> { self.0.r#RepeatSimpleParcelable(_arg_input, _arg_repeat) } fn r#ReverseSimpleParcelables(&self, _arg_input: &[simple_parcelable::SimpleParcelable], _arg_repeated: &mut Vec<simple_parcelable::SimpleParcelable>) -> binder::Result<Vec<simple_parcelable::SimpleParcelable>> { self.0.r#ReverseSimpleParcelables(_arg_input, _arg_repeated) } fn r#GetOldNameInterface(&self) -> binder::Result<binder::Strong<dyn crate::mangled::_7_android_4_aidl_5_tests_8_IOldName>> { self.0.r#GetOldNameInterface() } fn r#GetNewNameInterface(&self) -> binder::Result<binder::Strong<dyn crate::mangled::_7_android_4_aidl_5_tests_8_INewName>> { self.0.r#GetNewNameInterface() } @@ -4268,13 +4268,12 @@ fn on_transact(_aidl_service: &dyn ITestService, _aidl_code: binder::binder_impl } transactions::r#RepeatSimpleParcelable => { let _arg_input: simple_parcelable::SimpleParcelable = _aidl_data.read()?; - let mut _arg_repeat: Option<simple_parcelable::SimpleParcelable> = Default::default(); + let mut _arg_repeat: simple_parcelable::SimpleParcelable = Default::default(); let _aidl_return = _aidl_service.r#RepeatSimpleParcelable(&_arg_input, &mut _arg_repeat); match &_aidl_return { Ok(_aidl_return) => { _aidl_reply.write(&binder::Status::from(binder::StatusCode::OK))?; _aidl_reply.write(_aidl_return)?; - let _arg_repeat = _arg_repeat.ok_or(binder::StatusCode::UNEXPECTED_NULL)?; _aidl_reply.write(&_arg_repeat)?; } Err(_aidl_status) => _aidl_reply.write(_aidl_status)? diff --git a/tests/golden_output/frozen/aidl-test-interface-rust-source/gen/android/aidl/tests/ITestService.rs b/tests/golden_output/frozen/aidl-test-interface-rust-source/gen/android/aidl/tests/ITestService.rs index b5f76951..82244e2b 100644 --- a/tests/golden_output/frozen/aidl-test-interface-rust-source/gen/android/aidl/tests/ITestService.rs +++ b/tests/golden_output/frozen/aidl-test-interface-rust-source/gen/android/aidl/tests/ITestService.rs @@ -81,7 +81,7 @@ pub trait ITestService: binder::Interface + Send { fn r#ReverseList(&self, _arg_list: &crate::mangled::_7_android_4_aidl_5_tests_13_RecursiveList) -> binder::Result<crate::mangled::_7_android_4_aidl_5_tests_13_RecursiveList>; fn r#ReverseIBinderArray(&self, _arg_input: &[binder::SpIBinder], _arg_repeated: &mut Vec<Option<binder::SpIBinder>>) -> binder::Result<Vec<binder::SpIBinder>>; fn r#ReverseNullableIBinderArray(&self, _arg_input: Option<&[Option<binder::SpIBinder>]>, _arg_repeated: &mut Option<Vec<Option<binder::SpIBinder>>>) -> binder::Result<Option<Vec<Option<binder::SpIBinder>>>>; - fn r#RepeatSimpleParcelable(&self, _arg_input: &simple_parcelable::SimpleParcelable, _arg_repeat: &mut Option<simple_parcelable::SimpleParcelable>) -> binder::Result<simple_parcelable::SimpleParcelable>; + fn r#RepeatSimpleParcelable(&self, _arg_input: &simple_parcelable::SimpleParcelable, _arg_repeat: &mut simple_parcelable::SimpleParcelable) -> binder::Result<simple_parcelable::SimpleParcelable>; fn r#ReverseSimpleParcelables(&self, _arg_input: &[simple_parcelable::SimpleParcelable], _arg_repeated: &mut Vec<simple_parcelable::SimpleParcelable>) -> binder::Result<Vec<simple_parcelable::SimpleParcelable>>; fn r#GetOldNameInterface(&self) -> binder::Result<binder::Strong<dyn crate::mangled::_7_android_4_aidl_5_tests_8_IOldName>>; fn r#GetNewNameInterface(&self) -> binder::Result<binder::Strong<dyn crate::mangled::_7_android_4_aidl_5_tests_8_INewName>>; @@ -161,7 +161,7 @@ pub trait ITestServiceAsync<P>: binder::Interface + Send { fn r#ReverseList<'a>(&'a self, _arg_list: &'a crate::mangled::_7_android_4_aidl_5_tests_13_RecursiveList) -> binder::BoxFuture<'a, binder::Result<crate::mangled::_7_android_4_aidl_5_tests_13_RecursiveList>>; fn r#ReverseIBinderArray<'a>(&'a self, _arg_input: &'a [binder::SpIBinder], _arg_repeated: &'a mut Vec<Option<binder::SpIBinder>>) -> binder::BoxFuture<'a, binder::Result<Vec<binder::SpIBinder>>>; fn r#ReverseNullableIBinderArray<'a>(&'a self, _arg_input: Option<&'a [Option<binder::SpIBinder>]>, _arg_repeated: &'a mut Option<Vec<Option<binder::SpIBinder>>>) -> binder::BoxFuture<'a, binder::Result<Option<Vec<Option<binder::SpIBinder>>>>>; - fn r#RepeatSimpleParcelable<'a>(&'a self, _arg_input: &'a simple_parcelable::SimpleParcelable, _arg_repeat: &'a mut Option<simple_parcelable::SimpleParcelable>) -> binder::BoxFuture<'a, binder::Result<simple_parcelable::SimpleParcelable>>; + fn r#RepeatSimpleParcelable<'a>(&'a self, _arg_input: &'a simple_parcelable::SimpleParcelable, _arg_repeat: &'a mut simple_parcelable::SimpleParcelable) -> binder::BoxFuture<'a, binder::Result<simple_parcelable::SimpleParcelable>>; fn r#ReverseSimpleParcelables<'a>(&'a self, _arg_input: &'a [simple_parcelable::SimpleParcelable], _arg_repeated: &'a mut Vec<simple_parcelable::SimpleParcelable>) -> binder::BoxFuture<'a, binder::Result<Vec<simple_parcelable::SimpleParcelable>>>; fn r#GetOldNameInterface<'a>(&'a self) -> binder::BoxFuture<'a, binder::Result<binder::Strong<dyn crate::mangled::_7_android_4_aidl_5_tests_8_IOldName>>>; fn r#GetNewNameInterface<'a>(&'a self) -> binder::BoxFuture<'a, binder::Result<binder::Strong<dyn crate::mangled::_7_android_4_aidl_5_tests_8_INewName>>>; @@ -236,7 +236,7 @@ pub trait ITestServiceAsyncServer: binder::Interface + Send { async fn r#ReverseList(&self, _arg_list: &crate::mangled::_7_android_4_aidl_5_tests_13_RecursiveList) -> binder::Result<crate::mangled::_7_android_4_aidl_5_tests_13_RecursiveList>; async fn r#ReverseIBinderArray(&self, _arg_input: &[binder::SpIBinder], _arg_repeated: &mut Vec<Option<binder::SpIBinder>>) -> binder::Result<Vec<binder::SpIBinder>>; async fn r#ReverseNullableIBinderArray(&self, _arg_input: Option<&[Option<binder::SpIBinder>]>, _arg_repeated: &mut Option<Vec<Option<binder::SpIBinder>>>) -> binder::Result<Option<Vec<Option<binder::SpIBinder>>>>; - async fn r#RepeatSimpleParcelable(&self, _arg_input: &simple_parcelable::SimpleParcelable, _arg_repeat: &mut Option<simple_parcelable::SimpleParcelable>) -> binder::Result<simple_parcelable::SimpleParcelable>; + async fn r#RepeatSimpleParcelable(&self, _arg_input: &simple_parcelable::SimpleParcelable, _arg_repeat: &mut simple_parcelable::SimpleParcelable) -> binder::Result<simple_parcelable::SimpleParcelable>; async fn r#ReverseSimpleParcelables(&self, _arg_input: &[simple_parcelable::SimpleParcelable], _arg_repeated: &mut Vec<simple_parcelable::SimpleParcelable>) -> binder::Result<Vec<simple_parcelable::SimpleParcelable>>; async fn r#GetOldNameInterface(&self) -> binder::Result<binder::Strong<dyn crate::mangled::_7_android_4_aidl_5_tests_8_IOldName>>; async fn r#GetNewNameInterface(&self) -> binder::Result<binder::Strong<dyn crate::mangled::_7_android_4_aidl_5_tests_8_INewName>>; @@ -451,7 +451,7 @@ impl BnTestService { fn r#ReverseNullableIBinderArray(&self, _arg_input: Option<&[Option<binder::SpIBinder>]>, _arg_repeated: &mut Option<Vec<Option<binder::SpIBinder>>>) -> binder::Result<Option<Vec<Option<binder::SpIBinder>>>> { self._rt.block_on(self._inner.r#ReverseNullableIBinderArray(_arg_input, _arg_repeated)) } - fn r#RepeatSimpleParcelable(&self, _arg_input: &simple_parcelable::SimpleParcelable, _arg_repeat: &mut Option<simple_parcelable::SimpleParcelable>) -> binder::Result<simple_parcelable::SimpleParcelable> { + fn r#RepeatSimpleParcelable(&self, _arg_input: &simple_parcelable::SimpleParcelable, _arg_repeat: &mut simple_parcelable::SimpleParcelable) -> binder::Result<simple_parcelable::SimpleParcelable> { self._rt.block_on(self._inner.r#RepeatSimpleParcelable(_arg_input, _arg_repeat)) } fn r#ReverseSimpleParcelables(&self, _arg_input: &[simple_parcelable::SimpleParcelable], _arg_repeated: &mut Vec<simple_parcelable::SimpleParcelable>) -> binder::Result<Vec<simple_parcelable::SimpleParcelable>> { @@ -667,7 +667,7 @@ pub trait ITestServiceDefault: Send + Sync { fn r#ReverseNullableIBinderArray(&self, _arg_input: Option<&[Option<binder::SpIBinder>]>, _arg_repeated: &mut Option<Vec<Option<binder::SpIBinder>>>) -> binder::Result<Option<Vec<Option<binder::SpIBinder>>>> { Err(binder::StatusCode::UNKNOWN_TRANSACTION.into()) } - fn r#RepeatSimpleParcelable(&self, _arg_input: &simple_parcelable::SimpleParcelable, _arg_repeat: &mut Option<simple_parcelable::SimpleParcelable>) -> binder::Result<simple_parcelable::SimpleParcelable> { + fn r#RepeatSimpleParcelable(&self, _arg_input: &simple_parcelable::SimpleParcelable, _arg_repeat: &mut simple_parcelable::SimpleParcelable) -> binder::Result<simple_parcelable::SimpleParcelable> { Err(binder::StatusCode::UNKNOWN_TRANSACTION.into()) } fn r#ReverseSimpleParcelables(&self, _arg_input: &[simple_parcelable::SimpleParcelable], _arg_repeated: &mut Vec<simple_parcelable::SimpleParcelable>) -> binder::Result<Vec<simple_parcelable::SimpleParcelable>> { @@ -2001,13 +2001,13 @@ impl BpTestService { _aidl_reply.read_onto(_arg_repeated)?; Ok(_aidl_return) } - fn build_parcel_RepeatSimpleParcelable(&self, _arg_input: &simple_parcelable::SimpleParcelable, _arg_repeat: &mut Option<simple_parcelable::SimpleParcelable>) -> binder::Result<binder::binder_impl::Parcel> { + fn build_parcel_RepeatSimpleParcelable(&self, _arg_input: &simple_parcelable::SimpleParcelable, _arg_repeat: &mut simple_parcelable::SimpleParcelable) -> binder::Result<binder::binder_impl::Parcel> { let mut aidl_data = self.binder.prepare_transact()?; aidl_data.mark_sensitive(); aidl_data.write(_arg_input)?; Ok(aidl_data) } - fn read_response_RepeatSimpleParcelable(&self, _arg_input: &simple_parcelable::SimpleParcelable, _arg_repeat: &mut Option<simple_parcelable::SimpleParcelable>, _aidl_reply: std::result::Result<binder::binder_impl::Parcel, binder::StatusCode>) -> binder::Result<simple_parcelable::SimpleParcelable> { + fn read_response_RepeatSimpleParcelable(&self, _arg_input: &simple_parcelable::SimpleParcelable, _arg_repeat: &mut simple_parcelable::SimpleParcelable, _aidl_reply: std::result::Result<binder::binder_impl::Parcel, binder::StatusCode>) -> binder::Result<simple_parcelable::SimpleParcelable> { if let Err(binder::StatusCode::UNKNOWN_TRANSACTION) = _aidl_reply { if let Some(_aidl_default_impl) = <Self as ITestService>::getDefaultImpl() { return _aidl_default_impl.r#RepeatSimpleParcelable(_arg_input, _arg_repeat); @@ -2456,7 +2456,7 @@ impl ITestService for BpTestService { let _aidl_reply = self.binder.submit_transact(transactions::r#ReverseNullableIBinderArray, _aidl_data, binder::binder_impl::FLAG_CLEAR_BUF | binder::binder_impl::FLAG_PRIVATE_LOCAL); self.read_response_ReverseNullableIBinderArray(_arg_input, _arg_repeated, _aidl_reply) } - fn r#RepeatSimpleParcelable(&self, _arg_input: &simple_parcelable::SimpleParcelable, _arg_repeat: &mut Option<simple_parcelable::SimpleParcelable>) -> binder::Result<simple_parcelable::SimpleParcelable> { + fn r#RepeatSimpleParcelable(&self, _arg_input: &simple_parcelable::SimpleParcelable, _arg_repeat: &mut simple_parcelable::SimpleParcelable) -> binder::Result<simple_parcelable::SimpleParcelable> { let _aidl_data = self.build_parcel_RepeatSimpleParcelable(_arg_input, _arg_repeat)?; let _aidl_reply = self.binder.submit_transact(transactions::r#RepeatSimpleParcelable, _aidl_data, binder::binder_impl::FLAG_CLEAR_BUF | binder::binder_impl::FLAG_PRIVATE_LOCAL); self.read_response_RepeatSimpleParcelable(_arg_input, _arg_repeat, _aidl_reply) @@ -3299,7 +3299,7 @@ impl<P: binder::BinderAsyncPool> ITestServiceAsync<P> for BpTestService { } ) } - fn r#RepeatSimpleParcelable<'a>(&'a self, _arg_input: &'a simple_parcelable::SimpleParcelable, _arg_repeat: &'a mut Option<simple_parcelable::SimpleParcelable>) -> binder::BoxFuture<'a, binder::Result<simple_parcelable::SimpleParcelable>> { + fn r#RepeatSimpleParcelable<'a>(&'a self, _arg_input: &'a simple_parcelable::SimpleParcelable, _arg_repeat: &'a mut simple_parcelable::SimpleParcelable) -> binder::BoxFuture<'a, binder::Result<simple_parcelable::SimpleParcelable>> { let _aidl_data = match self.build_parcel_RepeatSimpleParcelable(_arg_input, _arg_repeat) { Ok(_aidl_data) => _aidl_data, Err(err) => return Box::pin(std::future::ready(Err(err))), @@ -3467,7 +3467,7 @@ impl ITestService for binder::binder_impl::Binder<BnTestService> { fn r#ReverseList(&self, _arg_list: &crate::mangled::_7_android_4_aidl_5_tests_13_RecursiveList) -> binder::Result<crate::mangled::_7_android_4_aidl_5_tests_13_RecursiveList> { self.0.r#ReverseList(_arg_list) } fn r#ReverseIBinderArray(&self, _arg_input: &[binder::SpIBinder], _arg_repeated: &mut Vec<Option<binder::SpIBinder>>) -> binder::Result<Vec<binder::SpIBinder>> { self.0.r#ReverseIBinderArray(_arg_input, _arg_repeated) } fn r#ReverseNullableIBinderArray(&self, _arg_input: Option<&[Option<binder::SpIBinder>]>, _arg_repeated: &mut Option<Vec<Option<binder::SpIBinder>>>) -> binder::Result<Option<Vec<Option<binder::SpIBinder>>>> { self.0.r#ReverseNullableIBinderArray(_arg_input, _arg_repeated) } - fn r#RepeatSimpleParcelable(&self, _arg_input: &simple_parcelable::SimpleParcelable, _arg_repeat: &mut Option<simple_parcelable::SimpleParcelable>) -> binder::Result<simple_parcelable::SimpleParcelable> { self.0.r#RepeatSimpleParcelable(_arg_input, _arg_repeat) } + fn r#RepeatSimpleParcelable(&self, _arg_input: &simple_parcelable::SimpleParcelable, _arg_repeat: &mut simple_parcelable::SimpleParcelable) -> binder::Result<simple_parcelable::SimpleParcelable> { self.0.r#RepeatSimpleParcelable(_arg_input, _arg_repeat) } fn r#ReverseSimpleParcelables(&self, _arg_input: &[simple_parcelable::SimpleParcelable], _arg_repeated: &mut Vec<simple_parcelable::SimpleParcelable>) -> binder::Result<Vec<simple_parcelable::SimpleParcelable>> { self.0.r#ReverseSimpleParcelables(_arg_input, _arg_repeated) } fn r#GetOldNameInterface(&self) -> binder::Result<binder::Strong<dyn crate::mangled::_7_android_4_aidl_5_tests_8_IOldName>> { self.0.r#GetOldNameInterface() } fn r#GetNewNameInterface(&self) -> binder::Result<binder::Strong<dyn crate::mangled::_7_android_4_aidl_5_tests_8_INewName>> { self.0.r#GetNewNameInterface() } @@ -4268,13 +4268,12 @@ fn on_transact(_aidl_service: &dyn ITestService, _aidl_code: binder::binder_impl } transactions::r#RepeatSimpleParcelable => { let _arg_input: simple_parcelable::SimpleParcelable = _aidl_data.read()?; - let mut _arg_repeat: Option<simple_parcelable::SimpleParcelable> = Default::default(); + let mut _arg_repeat: simple_parcelable::SimpleParcelable = Default::default(); let _aidl_return = _aidl_service.r#RepeatSimpleParcelable(&_arg_input, &mut _arg_repeat); match &_aidl_return { Ok(_aidl_return) => { _aidl_reply.write(&binder::Status::from(binder::StatusCode::OK))?; _aidl_reply.write(_aidl_return)?; - let _arg_repeat = _arg_repeat.ok_or(binder::StatusCode::UNEXPECTED_NULL)?; _aidl_reply.write(&_arg_repeat)?; } Err(_aidl_status) => _aidl_reply.write(_aidl_status)? diff --git a/tests/rust/test_client.rs b/tests/rust/test_client.rs index d97a3767..a5b2def1 100644 --- a/tests/rust/test_client.rs +++ b/tests/rust/test_client.rs @@ -221,10 +221,10 @@ fn test_repeat_string() { fn test_repeat_parcelable() { let service = get_test_service(); let input = SimpleParcelable { name: "foo".to_string(), number: 42 }; - let mut out_param = None; + let mut out_param = SimpleParcelable::default(); let returned = service.RepeatSimpleParcelable(&input, &mut out_param); assert_eq!(returned, Ok(input.clone())); - assert_eq!(out_param, Some(input)); + assert_eq!(out_param, input); } macro_rules! test_reverse_array { diff --git a/tests/rust/test_service.rs b/tests/rust/test_service.rs index 08bef215..4c6da23d 100644 --- a/tests/rust/test_service.rs +++ b/tests/rust/test_service.rs @@ -472,9 +472,9 @@ impl ITestService::ITestService for TestService { fn RepeatSimpleParcelable( &self, input: &SimpleParcelable, - repeat: &mut Option<SimpleParcelable>, + repeat: &mut SimpleParcelable, ) -> binder::Result<SimpleParcelable> { - *repeat = Some(input.clone()); + *repeat = input.clone(); Ok(input.clone()) } diff --git a/tests/rust/test_service_async.rs b/tests/rust/test_service_async.rs index bc8f95f6..84ca50c2 100644 --- a/tests/rust/test_service_async.rs +++ b/tests/rust/test_service_async.rs @@ -519,9 +519,9 @@ impl ITestService::ITestServiceAsyncServer for TestService { async fn RepeatSimpleParcelable( &self, input: &SimpleParcelable, - repeat: &mut Option<SimpleParcelable>, + repeat: &mut SimpleParcelable, ) -> binder::Result<SimpleParcelable> { - *repeat = Some(input.clone()); + *repeat = input.clone(); Ok(input.clone()) } |