Jb Evain 15 лет назад
Родитель
Сommit
6068950ead

+ 0 - 13
mcs/tools/linker/Mono.Linker.Steps/CleanStep.cs

@@ -61,25 +61,12 @@ namespace Mono.Linker.Steps {
 
 		static void CleanType (TypeDefinition type)
 		{
-			if (type.HasNestedTypes)
-				CleanNestedTypes (type);
 			if (type.HasProperties)
 				CleanProperties (type);
 			if (type.HasEvents)
 				CleanEvents (type);
 		}
 
-		static void CleanNestedTypes (TypeDefinition type)
-		{
-			var nested_types = type.NestedTypes;
-
-			for (int i = 0; i < nested_types.Count; i++) {
-				var nested_type = nested_types [i];
-				if (!type.Module.Types.Contains (nested_type))
-					nested_types.RemoveAt (i--);
-			}
-		}
-
 		static MethodDefinition CheckMethod (TypeDefinition type, MethodDefinition method)
 		{
 			if (method == null)

+ 15 - 0
mcs/tools/linker/Mono.Linker.Steps/SweepStep.cs

@@ -111,6 +111,21 @@ namespace Mono.Linker.Steps {
 
 			if (type.HasMethods)
 				SweepCollection (type.Methods);
+
+			if (type.HasNestedTypes)
+				SweepNestedTypes (type);
+		}
+
+		void SweepNestedTypes (TypeDefinition type)
+		{
+			for (int i = 0; i < type.NestedTypes.Count; i++) {
+				var nested = type.NestedTypes [i];
+				if (Annotations.IsMarked (nested)) {
+					SweepType (nested);
+				} else {
+					//type.NestedTypes.RemoveAt (i--);
+				}
+			}
 		}
 
 		void SweepCollection (IList list)