/pliant/language/compiler/type/inherit.pli
 
 1  module "/pliant/install/ring1.pli" 
 2   
 3  meta inherit e 
 4    if e:size<>1 
 5      return 
 6    var Pointer:Type interface :> (e:constant Type) map Type 
 7    if addressof:interface=null 
 8      return 
 9    var Pointer:Arrow :> e:module first "pliant type" 
 10    if c=null or entry_type:c<>Type 
 11      return 
 12    var Pointer:Type implementation :> map Type 
 13    if interface:nb_fields<>and implementation:nb_fields<>0 
 14      return 
 15    for (var Int i) interface:nb_fields-1 
 16      var Pointer:TypeField :> interface field i 
 17      implementation define_field f:type f:name f:initial_value 
 18    interface maybe implementation 
 19    set_void_result 
 20   
 21  export inherit