11use crate :: value:: input:: { values_vec_to_ns_array, ScriptInputConversionError } ;
22use crate :: value:: output:: { get_value_from_ns_apple_event_descriptor, ScriptOutputConversionError } ;
33use crate :: value:: Value ;
4- use icrate:: objc2:: rc:: Id ;
5- use icrate:: objc2:: runtime:: AnyObject ;
6- use icrate:: objc2:: ClassType ;
4+ use objc2:: { rc:: Retained , runtime:: AnyObject , AllocAnyThread } ;
75use objc2_foundation:: { NSAppleEventDescriptor , NSDictionary , NSString , NSValue } ;
86use objc2_osa_kit:: {
97 OSALanguage , OSALanguageInstance , OSAScript , OSAScriptErrorMessageKey , OSAScriptErrorRangeKey ,
@@ -78,7 +76,7 @@ fn check_main_thread() -> Result<(), ScriptExecutionError> {
7876/// # }
7977/// ```
8078pub struct Script {
81- script : Id < OSAScript > ,
79+ script : Retained < OSAScript > ,
8280 compiled : bool ,
8381}
8482
@@ -132,18 +130,21 @@ pub enum ScriptExecutionError {
132130}
133131
134132fn extract_error_data (
135- error_dict_opt : Option < Id < NSDictionary < NSString , AnyObject > > > ,
133+ error_dict_opt : Option < Retained < NSDictionary < NSString , AnyObject > > > ,
136134) -> Option < ( String , ( usize , usize ) ) > {
137135 match error_dict_opt {
138136 None => None ,
139137 Some ( error_dict) => match unsafe { error_dict. valueForKey ( OSAScriptErrorMessageKey ) } {
140138 None => None ,
141139 Some ( message_obj) => {
142- let error_message_ns_str: Id < NSString > = unsafe { Id :: cast ( message_obj) } ;
140+ let error_message_ns_str: Retained < NSString > =
141+ unsafe { Retained :: cast_unchecked ( message_obj) } ;
143142 Some ( (
144143 error_message_ns_str. to_string ( ) ,
145144 match unsafe { error_dict. valueForKey ( OSAScriptErrorRangeKey ) }
146- . map ( |range| -> Id < NSValue > { unsafe { Id :: cast ( range) } } )
145+ . map ( |range| -> Retained < NSValue > {
146+ unsafe { Retained :: cast_unchecked ( range) }
147+ } )
147148 . map ( |range| range. get_range ( ) )
148149 {
149150 Some ( Some ( range) ) => ( range. location , range. length ) ,
@@ -156,7 +157,7 @@ fn extract_error_data(
156157}
157158
158159#[ inline]
159- fn get_osa_language_instance ( language : Language ) -> Id < OSALanguageInstance > {
160+ fn get_osa_language_instance ( language : Language ) -> Retained < OSALanguageInstance > {
160161 let language_name = match language {
161162 Language :: AppleScript => "AppleScript" ,
162163 Language :: JavaScript => "JavaScript" ,
@@ -178,7 +179,7 @@ impl Script {
178179 & script_ns_string,
179180 None ,
180181 Some ( ns_language_instance. deref ( ) ) ,
181- OSAStorageOptions :: OSANull ,
182+ OSAStorageOptions :: Null ,
182183 )
183184 } ;
184185 Self {
@@ -193,7 +194,7 @@ impl Script {
193194 return Ok ( ( ) ) ;
194195 }
195196
196- let mut error_opt: Option < Id < NSDictionary < NSString , AnyObject > > > = None ;
197+ let mut error_opt: Option < Retained < NSDictionary < NSString , AnyObject > > > = None ;
197198 if unsafe { self . script . compileAndReturnError ( Some ( & mut error_opt) ) } {
198199 self . compiled = true ;
199200 return Ok ( ( ) ) ;
@@ -214,14 +215,14 @@ impl Script {
214215 /// In case of `JavaScript` output can be returned using `output` variable. I.e. `output = "test";`.
215216 pub fn execute ( & self ) -> Result < Value , ScriptExecutionError > {
216217 check_main_thread ( ) ?;
217- let mut error_opt: Option < Id < NSDictionary < NSString , AnyObject > > > = None ;
218+ let mut error_opt: Option < Retained < NSDictionary < NSString , AnyObject > > > = None ;
218219 let result = unsafe { self . script . executeAndReturnError ( Some ( & mut error_opt) ) } ;
219220 Self :: process_execution_result ( result, error_opt)
220221 }
221222
222223 fn process_execution_result (
223- result : Option < Id < NSAppleEventDescriptor > > ,
224- error_opt : Option < Id < NSDictionary < NSString , AnyObject > > > ,
224+ result : Option < Retained < NSAppleEventDescriptor > > ,
225+ error_opt : Option < Retained < NSDictionary < NSString , AnyObject > > > ,
225226 ) -> Result < Value , ScriptExecutionError > {
226227 match error_opt {
227228 None => match result {
@@ -249,7 +250,7 @@ impl Script {
249250 arguments : I ,
250251 ) -> Result < Value , ScriptExecutionError > {
251252 check_main_thread ( ) ?;
252- let mut error_opt: Option < Id < NSDictionary < NSString , AnyObject > > > = None ;
253+ let mut error_opt: Option < Retained < NSDictionary < NSString , AnyObject > > > = None ;
253254 let ns_handler_name = NSString :: from_str ( function_name) ;
254255 let ns_arguments = values_vec_to_ns_array ( arguments) ?;
255256 let result = unsafe {
0 commit comments