@@ -252,7 +252,7 @@ mod tests {
252
252
use crate :: { FieldAttrs , TagMode , TagNumber } ;
253
253
use proc_macro2:: Span ;
254
254
use quote:: quote;
255
- use syn:: { punctuated:: Punctuated , Ident , Path , PathSegment , Type , TypePath } ;
255
+ use syn:: { punctuated:: Punctuated , Ident , Path , PathArguments , PathSegment , Type , TypePath } ;
256
256
257
257
/// Create a [`Type::Path`].
258
258
pub fn type_path ( ident : Ident ) -> Type {
@@ -284,6 +284,7 @@ mod tests {
284
284
optional : false ,
285
285
tag_mode : TagMode :: Explicit ,
286
286
constructed : false ,
287
+ skipped : None ,
287
288
} ;
288
289
289
290
let field_type = Ident :: new ( "String" , span) ;
@@ -303,7 +304,7 @@ mod tests {
303
304
) ;
304
305
305
306
assert_eq ! (
306
- field. to_encode_tokens( ) . to_string( ) ,
307
+ field. to_encode_tokens( ) . unwrap ( ) . to_string( ) ,
307
308
quote! {
308
309
self . example_field
309
310
}
@@ -324,6 +325,7 @@ mod tests {
324
325
optional : false ,
325
326
tag_mode : TagMode :: Implicit ,
326
327
constructed : false ,
328
+ skipped : None ,
327
329
} ;
328
330
329
331
let field_type = Ident :: new ( "String" , span) ;
@@ -354,7 +356,7 @@ mod tests {
354
356
) ;
355
357
356
358
assert_eq ! (
357
- field. to_encode_tokens( ) . to_string( ) ,
359
+ field. to_encode_tokens( ) . unwrap ( ) . to_string( ) ,
358
360
quote! {
359
361
:: der:: asn1:: ContextSpecificRef {
360
362
tag_number: :: der:: TagNumber :: N0 ,
@@ -365,4 +367,52 @@ mod tests {
365
367
. to_string( )
366
368
) ;
367
369
}
370
+
371
+ #[ test]
372
+ fn skipped ( ) {
373
+ let span = Span :: call_site ( ) ;
374
+ let ident = Ident :: new ( "skipped" , span) ;
375
+
376
+ let mut segments = Punctuated :: new ( ) ;
377
+ segments. push ( PathSegment {
378
+ ident : Ident :: new ( "Default" , span) ,
379
+ arguments : PathArguments :: None ,
380
+ } ) ;
381
+ segments. push ( PathSegment {
382
+ ident : Ident :: new ( "default" , span) ,
383
+ arguments : PathArguments :: None ,
384
+ } ) ;
385
+
386
+ let attrs = FieldAttrs {
387
+ asn1_type : None ,
388
+ context_specific : Some ( TagNumber ( 0 ) ) ,
389
+ default : None ,
390
+ extensible : false ,
391
+ optional : false ,
392
+ tag_mode : TagMode :: Implicit ,
393
+ constructed : false ,
394
+ skipped : Some ( Path {
395
+ leading_colon : None ,
396
+ segments,
397
+ } ) ,
398
+ } ;
399
+
400
+ let field_type = Ident :: new ( "String" , span) ;
401
+
402
+ let field = SequenceField {
403
+ ident,
404
+ attrs,
405
+ field_type : type_path ( field_type) ,
406
+ } ;
407
+
408
+ assert_eq ! (
409
+ field. to_decode_tokens( ) . to_string( ) ,
410
+ quote! {
411
+ let skipped = Default :: default ( ) ;
412
+ }
413
+ . to_string( )
414
+ ) ;
415
+
416
+ assert ! ( field. to_encode_tokens( ) . is_none( ) ) ;
417
+ }
368
418
}
0 commit comments