Make sure enum and resource constructors are inlined properly
diff --git a/src/rustc/metadata/encoder.rs b/src/rustc/metadata/encoder.rs
index 6a8a77b..ae9ab78 100644
--- a/src/rustc/metadata/encoder.rs
+++ b/src/rustc/metadata/encoder.rs
@@ -241,8 +241,8 @@
     ebml_w.end_tag();
 }
 
-fn encode_enum_id(ebml_w: ebml::writer, id: def_id) {
-    ebml_w.start_tag(tag_items_data_item_enum_id);
+fn encode_parent_item(ebml_w: ebml::writer, id: def_id) {
+    ebml_w.start_tag(tag_items_data_parent_item);
     ebml_w.writer.write(str::bytes(def_to_str(id)));
     ebml_w.end_tag();
 }
@@ -260,7 +260,7 @@
         encode_def_id(ebml_w, local_def(variant.node.id));
         encode_family(ebml_w, 'v');
         encode_name(ebml_w, variant.node.name);
-        encode_enum_id(ebml_w, local_def(id));
+        encode_parent_item(ebml_w, local_def(id));
         encode_type(ecx, ebml_w,
                     node_id_to_type(ecx.ccx.tcx, variant.node.id));
         if vec::len(variant.node.args) > 0u && ty_params.len() == 0u {
@@ -397,6 +397,7 @@
         for v: variant in variants {
             encode_variant_id(ebml_w, local_def(v.node.id));
         }
+        astencode::encode_inlined_item(ecx, ebml_w, path, ii_item(item));
         encode_path(ebml_w, path, ast_map::path_name(item.ident));
         ebml_w.end_tag();
         encode_enum_variant_info(ecx, ebml_w, item.id, variants,
@@ -414,11 +415,7 @@
         encode_type_param_bounds(ebml_w, ecx, tps);
         encode_type(ecx, ebml_w, ty::ty_fn_ret(fn_ty));
         encode_name(ebml_w, item.ident);
-        if tps.len() == 0u {
-            encode_symbol(ecx, ebml_w, item.id);
-        } else {
-            astencode::encode_inlined_item(ecx, ebml_w, path, ii_item(item));
-        }
+        astencode::encode_inlined_item(ecx, ebml_w, path, ii_item(item));
         encode_path(ebml_w, path, ast_map::path_name(item.ident));
         ebml_w.end_tag();
 
@@ -428,9 +425,7 @@
         encode_family(ebml_w, 'f');
         encode_type_param_bounds(ebml_w, ecx, tps);
         encode_type(ecx, ebml_w, fn_ty);
-        if tps.len() == 0u {
-            encode_symbol(ecx, ebml_w, ctor_id);
-        }
+        encode_parent_item(ebml_w, local_def(item.id));
         encode_path(ebml_w, path, ast_map::path_name(item.ident));
         ebml_w.end_tag();
       }