Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/corert.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/TypeMetadataNode.cs')
-rw-r--r--src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/TypeMetadataNode.cs17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/TypeMetadataNode.cs b/src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/TypeMetadataNode.cs
index a8416afad..39ad01e9f 100644
--- a/src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/TypeMetadataNode.cs
+++ b/src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/TypeMetadataNode.cs
@@ -51,6 +51,23 @@ namespace ILCompiler.DependencyAnalysis
dependencies.Add(factory.MethodMetadata(_type.GetMethod("Invoke", null)), "Delegate invoke method metadata");
}
+ // If the user asked for complete metadata to be generated for all types that are getting metadata, ensure that.
+ var mdManager = (UsageBasedMetadataManager)factory.MetadataManager;
+ if ((mdManager._generationOptions & UsageBasedMetadataGenerationOptions.CompleteTypesOnly) != 0)
+ {
+ foreach (MethodDesc method in _type.GetMethods())
+ {
+ if (!mdManager.IsReflectionBlocked(method))
+ dependencies.Add(factory.MethodMetadata(method), "Complete metadata for type");
+ }
+
+ foreach (FieldDesc field in _type.GetFields())
+ {
+ if (!mdManager.IsReflectionBlocked(field))
+ dependencies.Add(factory.FieldMetadata(field), "Complete metadata for type");
+ }
+ }
+
return dependencies;
}