diff options
author | Marek Safar <marek.safar@gmail.com> | 2018-09-19 15:19:22 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-09-19 15:19:22 +0300 |
commit | efd29b5cf854679349066e22ef9038b8cfe76d94 (patch) | |
tree | 2de750c1ac8a487d7f6d149592a6362ade6a5a77 /src/Common/src/TypeSystem/Ecma/EcmaModule.cs | |
parent | f9124d69e41d42196510dd7234b2d53fed48ad4c (diff) | |
parent | 49f9ed0e66fc2d4cd682821396c6af5e80182048 (diff) |
Merge pull request #25 from ntherning/bump-corert
Bump to latest upstream
Diffstat (limited to 'src/Common/src/TypeSystem/Ecma/EcmaModule.cs')
-rw-r--r-- | src/Common/src/TypeSystem/Ecma/EcmaModule.cs | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/Common/src/TypeSystem/Ecma/EcmaModule.cs b/src/Common/src/TypeSystem/Ecma/EcmaModule.cs index 14b3d51b4..37f82ca03 100644 --- a/src/Common/src/TypeSystem/Ecma/EcmaModule.cs +++ b/src/Common/src/TypeSystem/Ecma/EcmaModule.cs @@ -9,8 +9,6 @@ using System.Reflection.Metadata; using System.Reflection.Metadata.Ecma335; using System.Reflection.PortableExecutable; -using Internal.TypeSystem; - namespace Internal.TypeSystem.Ecma { public partial class EcmaModule : ModuleDesc @@ -147,6 +145,10 @@ namespace Internal.TypeSystem.Ecma item = _module; break; + case HandleKind.ModuleReference: + item = _module.ResolveModuleReference((ModuleReferenceHandle)handle); + break; + default: throw new BadImageFormatException("Unknown metadata token type: " + handle.Kind); } @@ -165,6 +167,13 @@ namespace Internal.TypeSystem.Ecma } } + private object ResolveModuleReference(ModuleReferenceHandle handle) + { + ModuleReference moduleReference = _metadataReader.GetModuleReference(handle); + string fileName = _metadataReader.GetString(moduleReference.Name); + return Context.ResolveModule(this, fileName); + } + private LockFreeReaderHashtable<EntityHandle, IEntityHandleObject> _resolvedTokens; internal EcmaModule(TypeSystemContext context, PEReader peReader, MetadataReader metadataReader) |