@@ -406,32 +406,47 @@ fn encode_self_type(ebml_w: writer::Encoder, self_type: ast::self_ty_) {
406
406
ebml_w. start_tag ( tag_item_trait_method_self_ty) ;
407
407
408
408
// Encode the base self type.
409
- let ch;
410
409
match self_type {
411
- sty_static => { ch = 's' as u8 ; }
412
- sty_by_ref => { ch = 'r' as u8 ; }
413
- sty_value => { ch = 'v' as u8 ; }
414
- sty_region( _) => { ch = '&' as u8 ; }
415
- sty_box( _) => { ch = '@' as u8 ; }
416
- sty_uniq( _) => { ch = '~' as u8 ; }
417
- }
418
- ebml_w. writer . write ( & [ ch ] ) ;
419
-
420
- // Encode mutability.
421
- match self_type {
422
- sty_static | sty_by_ref | sty_value => { /* No-op. */ }
423
- sty_region( m_imm) | sty_box( m_imm) | sty_uniq( m_imm) => {
424
- ebml_w. writer . write ( & [ 'i' as u8 ] ) ;
410
+ sty_static => {
411
+ ebml_w. writer . write ( & [ 's' as u8 ] ) ;
412
+ }
413
+ sty_by_ref => {
414
+ ebml_w. writer . write ( & [ 'r' as u8 ] ) ;
415
+ }
416
+ sty_value => {
417
+ ebml_w. writer . write ( & [ 'v' as u8 ] ) ;
418
+ }
419
+ sty_region( _, m) => {
420
+ // FIXME(#4846) encode custom lifetime
421
+ ebml_w. writer . write ( & [ '&' as u8 ] ) ;
422
+ encode_mutability ( ebml_w, m) ;
425
423
}
426
- sty_region( m_mutbl) | sty_box( m_mutbl) | sty_uniq( m_mutbl) => {
427
- ebml_w. writer . write ( & [ 'm' as u8 ] ) ;
424
+ sty_box( m) => {
425
+ ebml_w. writer . write ( & [ '@' as u8 ] ) ;
426
+ encode_mutability ( ebml_w, m) ;
428
427
}
429
- sty_region( m_const) | sty_box( m_const) | sty_uniq( m_const) => {
430
- ebml_w. writer . write ( & [ 'c' as u8 ] ) ;
428
+ sty_uniq( m) => {
429
+ ebml_w. writer . write ( & [ '~' as u8 ] ) ;
430
+ encode_mutability ( ebml_w, m) ;
431
431
}
432
432
}
433
433
434
434
ebml_w. end_tag ( ) ;
435
+
436
+ fn encode_mutability ( ebml_w : writer:: Encoder ,
437
+ m : ast:: mutability ) {
438
+ match m {
439
+ m_imm => {
440
+ ebml_w. writer . write ( & [ 'i' as u8 ] ) ;
441
+ }
442
+ m_mutbl => {
443
+ ebml_w. writer . write ( & [ 'm' as u8 ] ) ;
444
+ }
445
+ m_const => {
446
+ ebml_w. writer . write ( & [ 'c' as u8 ] ) ;
447
+ }
448
+ }
449
+ }
435
450
}
436
451
437
452
fn encode_method_sort ( ebml_w : writer:: Encoder , sort : char ) {
0 commit comments