15
15
* limitations under the License.
16
16
*/
17
17
18
+ use anyhow:: { Error , Result } ;
18
19
use deno_ast:: swc:: common:: comments:: Comment ;
19
20
use deno_ast:: MultiThreadedComments ;
20
-
21
21
use jni:: objects:: { GlobalRef , JMethodID , JObject } ;
22
22
use jni:: JNIEnv ;
23
23
24
24
use crate :: jni_utils:: * ;
25
25
use crate :: span_utils:: { ByteToIndexMap , ToJavaWithMap } ;
26
26
27
27
impl ToJavaWithMap < ByteToIndexMap > for Comment {
28
- fn to_java_with_map < ' local , ' a > ( & self , env : & mut JNIEnv < ' local > , map : & ' _ ByteToIndexMap ) -> JObject < ' a >
28
+ fn to_java_with_map < ' local , ' a > ( & self , env : & mut JNIEnv < ' local > , map : & ' _ ByteToIndexMap ) -> Result < JObject < ' a > >
29
29
where
30
30
' local : ' a ,
31
31
{
32
32
let text = & self . text ;
33
- let java_kind = self . kind . to_java ( env) ;
34
- let java_span = map. get_span_ex_by_span ( & self . span ) . to_java ( env) ;
35
- let return_value = unsafe { JAVA_COMMENT . as_ref ( ) . unwrap ( ) } . construct ( env, text, & java_kind, & java_span) ;
33
+ let java_kind = self . kind . to_java ( env) ?;
34
+ let java_span = map. get_span_ex_by_span ( & self . span ) . to_java ( env) ?;
35
+ let return_value = unsafe { JAVA_COMMENT . as_ref ( ) . unwrap ( ) }
36
+ . construct ( env, text, & java_kind, & java_span)
37
+ . map_err ( Error :: msg) ;
36
38
delete_local_ref ! ( env, java_kind) ;
37
39
delete_local_ref ! ( env, java_span) ;
38
40
return_value
39
41
}
40
42
}
41
43
42
44
impl ToJavaWithMap < ByteToIndexMap > for MultiThreadedComments {
43
- fn to_java_with_map < ' local , ' a > ( & self , env : & mut JNIEnv < ' local > , map : & ' _ ByteToIndexMap ) -> JObject < ' a >
45
+ fn to_java_with_map < ' local , ' a > ( & self , env : & mut JNIEnv < ' local > , map : & ' _ ByteToIndexMap ) -> Result < JObject < ' a > >
44
46
where
45
47
' local : ' a ,
46
48
{
47
49
let leading = self . leading_map ( ) ;
48
50
let trailing = self . trailing_map ( ) ;
49
- let java_leading = map_new ( env, leading. len ( ) ) ;
50
- leading. iter ( ) . for_each ( | ( key , value ) | {
51
- let key_span_ex = map. get_span_ex_by_byte_pos ( & key ) ;
52
- let java_position = integer_value_of ( env, key_span_ex. start as i32 ) ;
53
- let java_comments = list_new ( env, value . len ( ) ) ;
54
- value . iter ( ) . for_each ( |comment| {
55
- let java_comment = comment. to_java_with_map ( env, map) ;
56
- list_add ( env, & java_comments, & java_comment) ;
51
+ let java_leading = map_new ( env, leading. len ( ) ) ? ;
52
+ for ( position , comments ) in leading. iter ( ) {
53
+ let key_span_ex = map. get_span_ex_by_byte_pos ( & position ) ;
54
+ let java_position = integer_value_of ( env, key_span_ex. start as i32 ) ? ;
55
+ let java_comments = list_new ( env, comments . len ( ) ) ? ;
56
+ for comment in comments . iter ( ) {
57
+ let java_comment = comment. to_java_with_map ( env, map) ? ;
58
+ list_add ( env, & java_comments, & java_comment) ? ;
57
59
delete_local_ref ! ( env, java_comment) ;
58
- } ) ;
59
- let java_return_value = map_put ( env, & java_leading, & java_position, & java_comments) ;
60
+ } ;
61
+ let java_return_value = map_put ( env, & java_leading, & java_position, & java_comments) ? ;
60
62
delete_local_ref ! ( env, java_position) ;
61
63
delete_local_ref ! ( env, java_comments) ;
62
64
delete_local_ref ! ( env, java_return_value) ;
63
- } ) ;
64
- let java_trailing = map_new ( env, trailing. len ( ) ) ;
65
- trailing. iter ( ) . for_each ( | ( key , value ) | {
66
- let key_span_ex = map. get_span_ex_by_byte_pos ( & key ) ;
67
- let java_position = integer_value_of ( env, key_span_ex. start as i32 ) ;
68
- let java_comments = list_new ( env, value . len ( ) ) ;
69
- value . iter ( ) . for_each ( |comment| {
70
- let java_comment = comment. to_java_with_map ( env, map) ;
71
- list_add ( env, & java_comments, & java_comment) ;
65
+ } ;
66
+ let java_trailing = map_new ( env, trailing. len ( ) ) ? ;
67
+ for ( position , comments ) in trailing. iter ( ) {
68
+ let key_span_ex = map. get_span_ex_by_byte_pos ( & position ) ;
69
+ let java_position = integer_value_of ( env, key_span_ex. start as i32 ) ? ;
70
+ let java_comments = list_new ( env, comments . len ( ) ) ? ;
71
+ for comment in comments . iter ( ) {
72
+ let java_comment = comment. to_java_with_map ( env, map) ? ;
73
+ list_add ( env, & java_comments, & java_comment) ? ;
72
74
delete_local_ref ! ( env, java_comment) ;
73
- } ) ;
74
- let java_return_value = map_put ( env, & java_trailing, & java_position, & java_comments) ;
75
+ } ;
76
+ let java_return_value = map_put ( env, & java_trailing, & java_position, & java_comments) ? ;
75
77
delete_local_ref ! ( env, java_position) ;
76
78
delete_local_ref ! ( env, java_comments) ;
77
79
delete_local_ref ! ( env, java_return_value) ;
78
- } ) ;
80
+ } ;
79
81
let return_value = unsafe { JAVA_COMMENTS . as_ref ( ) . unwrap ( ) } . construct ( env, & java_leading, & java_trailing) ;
80
82
delete_local_ref ! ( env, java_leading) ;
81
83
delete_local_ref ! ( env, java_trailing) ;
@@ -120,7 +122,7 @@ impl JavaSwc4jComment {
120
122
text : & str ,
121
123
kind : & JObject < ' _ > ,
122
124
span : & JObject < ' _ > ,
123
- ) -> JObject < ' a >
125
+ ) -> Result < JObject < ' a > >
124
126
where
125
127
' local : ' a ,
126
128
{
@@ -134,9 +136,9 @@ impl JavaSwc4jComment {
134
136
self . method_construct,
135
137
& [ text, kind, span] ,
136
138
"Swc4jComment construct()"
137
- ) ;
139
+ ) ? ;
138
140
delete_local_ref ! ( env, java_text) ;
139
- return_value
141
+ Ok ( return_value)
140
142
}
141
143
}
142
144
/* JavaSwc4jComment End */
@@ -177,7 +179,7 @@ impl JavaSwc4jComments {
177
179
env : & mut JNIEnv < ' local > ,
178
180
leading : & JObject < ' _ > ,
179
181
trailing : & JObject < ' _ > ,
180
- ) -> JObject < ' a >
182
+ ) -> Result < JObject < ' a > >
181
183
where
182
184
' local : ' a ,
183
185
{
@@ -189,8 +191,8 @@ impl JavaSwc4jComments {
189
191
self . method_construct,
190
192
& [ leading, trailing] ,
191
193
"Swc4jComments construct()"
192
- ) ;
193
- return_value
194
+ ) ? ;
195
+ Ok ( return_value)
194
196
}
195
197
}
196
198
/* JavaSwc4jComments End */
@@ -209,7 +211,7 @@ pub fn comments_new<'local, 'a>(
209
211
env : & mut JNIEnv < ' local > ,
210
212
comments : & MultiThreadedComments ,
211
213
map : & ByteToIndexMap ,
212
- ) -> JObject < ' a >
214
+ ) -> Result < JObject < ' a > >
213
215
where
214
216
' local : ' a ,
215
217
{
0 commit comments