@@ -406,32 +406,47 @@ fn encode_self_type(ebml_w: writer::Encoder, self_type: ast::self_ty_) {
406406 ebml_w. start_tag ( tag_item_trait_method_self_ty) ;
407407
408408 // Encode the base self type.
409- let ch;
410409 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) ;
425423 }
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) ;
428427 }
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) ;
431431 }
432432 }
433433
434434 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+ }
435450}
436451
437452fn encode_method_sort ( ebml_w : writer:: Encoder , sort : char ) {
0 commit comments