diff options
author | Michal Strehovský <MichalStrehovsky@users.noreply.github.com> | 2016-04-12 19:34:28 +0300 |
---|---|---|
committer | Michal Strehovský <MichalStrehovsky@users.noreply.github.com> | 2016-04-12 19:34:28 +0300 |
commit | 1c5153af484d602ae055f5e61f380edae8ebb7b3 (patch) | |
tree | 691b806ae06dbe180f5a31a98310e99f9b58ad7e /src/ILCompiler.MetadataTransform | |
parent | d95a6d9556152c81056e7f469228fe3216888b98 (diff) | |
parent | 063abe6178137349af215bc897e655b621393d9a (diff) |
Merge pull request #1122 from dotnet-bot/from-tfs
Merge changes from TFS
Diffstat (limited to 'src/ILCompiler.MetadataTransform')
-rw-r--r-- | src/ILCompiler.MetadataTransform/src/ILCompiler/Metadata/MetadataTransform.cs | 4 | ||||
-rw-r--r-- | src/ILCompiler.MetadataTransform/src/ILCompiler/Metadata/Transform.Field.cs | 16 |
2 files changed, 14 insertions, 6 deletions
diff --git a/src/ILCompiler.MetadataTransform/src/ILCompiler/Metadata/MetadataTransform.cs b/src/ILCompiler.MetadataTransform/src/ILCompiler/Metadata/MetadataTransform.cs index 42babf71b..799862f59 100644 --- a/src/ILCompiler.MetadataTransform/src/ILCompiler/Metadata/MetadataTransform.cs +++ b/src/ILCompiler.MetadataTransform/src/ILCompiler/Metadata/MetadataTransform.cs @@ -64,8 +64,8 @@ namespace ILCompiler.Metadata public abstract MetadataRecord HandleQualifiedMethod(Cts.MethodDesc method); /// <summary> - /// Retrieves an existing <see cref="FieldReference"/> record representing specified field - /// in the metadata writer object model, or creates a new one. + /// Retrieves an existing <see cref="QualifiedField"> or a <see cref="FieldReference"/> record + /// representing specified field in the metadata writer object model, or creates a new one. /// </summary> public abstract MetadataRecord HandleQualifiedField(Cts.FieldDesc field); diff --git a/src/ILCompiler.MetadataTransform/src/ILCompiler/Metadata/Transform.Field.cs b/src/ILCompiler.MetadataTransform/src/ILCompiler/Metadata/Transform.Field.cs index 908505a56..e82034211 100644 --- a/src/ILCompiler.MetadataTransform/src/ILCompiler/Metadata/Transform.Field.cs +++ b/src/ILCompiler.MetadataTransform/src/ILCompiler/Metadata/Transform.Field.cs @@ -25,7 +25,17 @@ namespace ILCompiler.Metadata public override MetadataRecord HandleQualifiedField(Cts.FieldDesc field) { - return HandleFieldReference(field); + if (_policy.GeneratesMetadata(field) && field.GetTypicalFieldDefinition() == field) + { + QualifiedField record = new QualifiedField(); + record.Field = HandleFieldDefinition(field); + record.EnclosingType = (TypeDefinition)HandleType(field.OwningType); + return record; + } + else + { + return HandleFieldReference(field); + } } private Field HandleFieldDefinition(Cts.FieldDesc field) @@ -68,8 +78,6 @@ namespace ILCompiler.Metadata private MemberReference HandleFieldReference(Cts.FieldDesc field) { - Debug.Assert(field.GetTypicalFieldDefinition() == field); - Debug.Assert(!_policy.GeneratesMetadata(field)); return (MemberReference)_fields.GetOrCreate(field, _initFieldRef ?? (_initFieldRef = InitializeFieldReference)); } @@ -79,7 +87,7 @@ namespace ILCompiler.Metadata record.Parent = HandleType(entity.OwningType); record.Signature = new FieldSignature { - Type = HandleType(entity.FieldType), + Type = HandleType(entity.GetTypicalFieldDefinition().FieldType), // TODO: CustomModifiers }; } |