diff options
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) |