Add namespace info to types (#75)

This commit is contained in:
Patrick Stevens
2025-06-27 21:41:53 +01:00
committed by GitHub
parent 84df17295b
commit 711bfd5aad
4 changed files with 25 additions and 7 deletions

View File

@@ -23,6 +23,7 @@ type ConcreteType<'typeGeneric when 'typeGeneric : comparison and 'typeGeneric :
_AssemblyName : AssemblyName
_Definition : ComparableTypeDefinitionHandle
_Name : string
_Namespace : string
_Generics : 'typeGeneric list
}
@@ -30,6 +31,7 @@ type ConcreteType<'typeGeneric when 'typeGeneric : comparison and 'typeGeneric :
member this.Definition : ComparableTypeDefinitionHandle = this._Definition
member this.Generics : 'typeGeneric list = this._Generics
member this.Name = this._Name
member this.Namespace = this._Namespace
override this.Equals (other : obj) : bool =
match other with
@@ -71,6 +73,7 @@ type RuntimeConcreteType = ConcreteType<TypeDefn>
module ConcreteType =
let make
(assemblyName : AssemblyName)
(ns : string)
(name : string)
(defn : TypeDefinitionHandle)
(generics : TypeDefn list)
@@ -80,12 +83,14 @@ module ConcreteType =
_AssemblyName = assemblyName
_Definition = ComparableTypeDefinitionHandle.Make defn
_Name = name
_Namespace = ns
_Generics = generics
}
let make'
(assemblyName : AssemblyName)
(defn : TypeDefinitionHandle)
(ns : string)
(name : string)
(genericParamCount : int)
: ConcreteType<FakeUnit>
@@ -94,6 +99,7 @@ module ConcreteType =
_AssemblyName = assemblyName
_Definition = ComparableTypeDefinitionHandle.Make defn
_Name = name
_Namespace = ns
_Generics = List.replicate genericParamCount FakeUnit.FakeUnit
}
@@ -110,4 +116,5 @@ module ConcreteType =
_Definition = x._Definition
_Generics = generics
_Name = x._Name
_Namespace = x._Namespace
}

View File

@@ -51,10 +51,12 @@ module FieldInfo =
let fieldSig = def.DecodeSignature (TypeDefn.typeProvider assembly, ())
let declaringType = def.GetDeclaringType ()
let typeGenerics = mr.GetTypeDefinition(declaringType).GetGenericParameters().Count
let declaringTypeName = mr.GetString (mr.GetTypeDefinition(declaringType).Name)
let decType = mr.GetTypeDefinition (declaringType)
let declaringTypeNamespace = mr.GetString decType.Namespace
let declaringTypeName = mr.GetString decType.Name
let declaringType =
ConcreteType.make' assembly declaringType declaringTypeName typeGenerics
ConcreteType.make' assembly declaringType declaringTypeNamespace declaringTypeName typeGenerics
{
Name = name

View File

@@ -671,8 +671,11 @@ module MethodInfo =
let declaringType = methodDef.GetDeclaringType ()
let declaringTypeName =
metadataReader.GetString (metadataReader.GetTypeDefinition(declaringType).Name)
let declaringDefn = metadataReader.GetTypeDefinition (declaringType)
let declaringTypeNamespace = metadataReader.GetString declaringDefn.Namespace
let declaringTypeName = metadataReader.GetString declaringDefn.Name
let declaringTypeGenericParams =
metadataReader.GetTypeDefinition(declaringType).GetGenericParameters().Count
@@ -696,7 +699,12 @@ module MethodInfo =
GenericParameter.readAll metadataReader (methodDef.GetGenericParameters ())
let declaringType =
ConcreteType.make' assemblyName declaringType declaringTypeName declaringTypeGenericParams
ConcreteType.make'
assemblyName
declaringType
declaringTypeNamespace
declaringTypeName
declaringTypeGenericParams
{
DeclaringType = declaringType