Skip to content

Commit d2b59ed

Browse files
TIHanbaronfel
authored andcommitted
Remove ILGlobals dependency on ILMetadataReader (#8041)
* First step to get rid of ilglobals * Added ILScopeRef.PrimaryAssembly * almost * Fixed * Fixing build * Revert ilwrite changes from last commit * some cleanup * Trying to fix build * Trying to fix build * Adjusting a few cases that use QualifiedName * Refactor a bit on normalize * Some cleanup * Put ctok in local function * Minor touch up for ILScopeRef matching * Do not need this function anymore * Remove ILGlobals dep on getNameOfScopeRef * Added possiblePrimaryAssemblyRefs * Fixed build * Hopefully this fixes the build * Added EqualsIgnoringVersion to ILAssemblyRef * Added RemapAssemblyRef * Use EqualsIgnoringVersion on primaryAssemblyRef check in remap * Cleanup * nit style feedback changes * Removed RemapAssemblyRef. Added stamp that ignores version. * Fixed build * Minor format change * minor name refactoring * minimizing diff
1 parent 7688d8d commit d2b59ed

File tree

17 files changed

+304
-229
lines changed

17 files changed

+304
-229
lines changed

src/absil/il.fs

Lines changed: 88 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,6 @@ type PrimaryAssembly =
6666
| Mscorlib -> "mscorlib"
6767
| System_Runtime -> "System.Runtime"
6868
| NetStandard -> "netstandard"
69-
static member IsSomePrimaryAssembly n =
70-
n = PrimaryAssembly.Mscorlib.Name
71-
|| n = PrimaryAssembly.System_Runtime.Name
72-
|| n = PrimaryAssembly.NetStandard.Name
7369

7470
// --------------------------------------------------------------------
7571
// Utilities: type names
@@ -373,6 +369,7 @@ let isMscorlib data =
373369
[<Sealed>]
374370
type ILAssemblyRef(data) =
375371
let uniqueStamp = AssemblyRefUniqueStampGenerator.Encode data
372+
let uniqueIgnoringVersionStamp = AssemblyRefUniqueStampGenerator.Encode { data with assemRefVersion = None }
376373

377374
member x.Name=data.assemRefName
378375

@@ -388,6 +385,11 @@ type ILAssemblyRef(data) =
388385

389386
member x.UniqueStamp=uniqueStamp
390387

388+
member x.UniqueIgnoringVersionStamp=uniqueIgnoringVersionStamp
389+
390+
member x.EqualsIgnoringVersion (aref: ILAssemblyRef) =
391+
aref.UniqueIgnoringVersionStamp = uniqueIgnoringVersionStamp
392+
391393
override x.GetHashCode() = uniqueStamp
392394

393395
override x.Equals yobj = ((yobj :?> ILAssemblyRef).UniqueStamp = uniqueStamp)
@@ -490,6 +492,7 @@ type ILScopeRef =
490492
| Local
491493
| Module of ILModuleRef
492494
| Assembly of ILAssemblyRef
495+
| PrimaryAssembly
493496

494497
member x.IsLocalRef = match x with ILScopeRef.Local -> true | _ -> false
495498

@@ -498,6 +501,7 @@ type ILScopeRef =
498501
| ILScopeRef.Local -> ""
499502
| ILScopeRef.Module mref -> "module "+mref.Name
500503
| ILScopeRef.Assembly aref -> aref.QualifiedName
504+
| ILScopeRef.PrimaryAssembly -> ""
501505

502506
type ILArrayBound = int32 option
503507

@@ -2193,6 +2197,11 @@ and ILExportedTypesAndForwarders =
21932197

21942198
member x.AsList = let (ILExportedTypesAndForwarders ltab) = x in Map.foldBack (fun _x y r -> y :: r) (ltab.Force()) []
21952199

2200+
member x.TryFindByName nm =
2201+
match x with
2202+
| ILExportedTypesAndForwarders ltab ->
2203+
ltab.Value.TryFind nm
2204+
21962205
[<RequireQualifiedAccess>]
21972206
type ILResourceAccess =
21982207
| Public
@@ -2593,62 +2602,55 @@ let tname_IntPtr = "System.IntPtr"
25932602
[<Literal>]
25942603
let tname_UIntPtr = "System.UIntPtr"
25952604

2605+
[<Literal>]
2606+
let tname_TypedReference = "System.TypedReference"
2607+
25962608
[<NoEquality; NoComparison; StructuredFormatDisplay("{DebugText}")>]
2597-
// This data structure needs an entirely delayed implementation
2598-
type ILGlobals(primaryScopeRef) =
2599-
2600-
let m_mkSysILTypeRef nm = mkILTyRef (primaryScopeRef, nm)
2601-
2602-
let m_typ_Object = mkILBoxedType (mkILNonGenericTySpec (m_mkSysILTypeRef tname_Object))
2603-
let m_typ_String = mkILBoxedType (mkILNonGenericTySpec (m_mkSysILTypeRef tname_String))
2604-
let m_typ_Array = mkILBoxedType (mkILNonGenericTySpec (m_mkSysILTypeRef tname_Array))
2605-
let m_typ_Type = mkILBoxedType (mkILNonGenericTySpec (m_mkSysILTypeRef tname_Type))
2606-
let m_typ_SByte = ILType.Value (mkILNonGenericTySpec (m_mkSysILTypeRef tname_SByte))
2607-
let m_typ_Int16 = ILType.Value (mkILNonGenericTySpec (m_mkSysILTypeRef tname_Int16))
2608-
let m_typ_Int32 = ILType.Value (mkILNonGenericTySpec (m_mkSysILTypeRef tname_Int32))
2609-
let m_typ_Int64 = ILType.Value (mkILNonGenericTySpec (m_mkSysILTypeRef tname_Int64))
2610-
let m_typ_Byte = ILType.Value (mkILNonGenericTySpec (m_mkSysILTypeRef tname_Byte))
2611-
let m_typ_UInt16 = ILType.Value (mkILNonGenericTySpec (m_mkSysILTypeRef tname_UInt16))
2612-
let m_typ_UInt32 = ILType.Value (mkILNonGenericTySpec (m_mkSysILTypeRef tname_UInt32))
2613-
let m_typ_UInt64 = ILType.Value (mkILNonGenericTySpec (m_mkSysILTypeRef tname_UInt64))
2614-
let m_typ_Single = ILType.Value (mkILNonGenericTySpec (m_mkSysILTypeRef tname_Single))
2615-
let m_typ_Double = ILType.Value (mkILNonGenericTySpec (m_mkSysILTypeRef tname_Double))
2616-
let m_typ_Bool = ILType.Value (mkILNonGenericTySpec (m_mkSysILTypeRef tname_Bool))
2617-
let m_typ_Char = ILType.Value (mkILNonGenericTySpec (m_mkSysILTypeRef tname_Char))
2618-
let m_typ_IntPtr = ILType.Value (mkILNonGenericTySpec (m_mkSysILTypeRef tname_IntPtr))
2619-
let m_typ_UIntPtr = ILType.Value (mkILNonGenericTySpec (m_mkSysILTypeRef tname_UIntPtr))
2620-
2621-
member x.primaryAssemblyScopeRef = m_typ_Object.TypeRef.Scope
2622-
member x.primaryAssemblyName =
2623-
match m_typ_Object.TypeRef.Scope with
2624-
| ILScopeRef.Assembly aref -> aref.Name
2609+
type ILGlobals(primaryScopeRef: ILScopeRef, assembliesThatForwardToPrimaryAssembly: ILAssemblyRef list) =
2610+
2611+
let assembliesThatForwardToPrimaryAssembly = Array.ofList assembliesThatForwardToPrimaryAssembly
2612+
2613+
let mkSysILTypeRef nm = mkILTyRef (primaryScopeRef, nm)
2614+
2615+
member _.primaryAssemblyScopeRef = primaryScopeRef
2616+
member x.primaryAssemblyRef =
2617+
match primaryScopeRef with
2618+
| ILScopeRef.Assembly aref -> aref
26252619
| _ -> failwith "Invalid primary assembly"
2626-
member x.typ_Object = m_typ_Object
2627-
member x.typ_String = m_typ_String
2628-
member x.typ_Array = m_typ_Array
2629-
member x.typ_Type = m_typ_Type
2630-
member x.typ_IntPtr = m_typ_IntPtr
2631-
member x.typ_UIntPtr = m_typ_UIntPtr
2632-
member x.typ_Byte = m_typ_Byte
2633-
member x.typ_Int16 = m_typ_Int16
2634-
member x.typ_Int32 = m_typ_Int32
2635-
member x.typ_Int64 = m_typ_Int64
2636-
member x.typ_SByte = m_typ_SByte
2637-
member x.typ_UInt16 = m_typ_UInt16
2638-
member x.typ_UInt32 = m_typ_UInt32
2639-
member x.typ_UInt64 = m_typ_UInt64
2640-
member x.typ_Single = m_typ_Single
2641-
member x.typ_Double = m_typ_Double
2642-
member x.typ_Bool = m_typ_Bool
2643-
member x.typ_Char = m_typ_Char
2620+
member x.primaryAssemblyName = x.primaryAssemblyRef.Name
2621+
2622+
member val typ_Object = mkILBoxedType (mkILNonGenericTySpec (mkSysILTypeRef tname_Object))
2623+
member val typ_String = mkILBoxedType (mkILNonGenericTySpec (mkSysILTypeRef tname_String))
2624+
member val typ_Array = mkILBoxedType (mkILNonGenericTySpec (mkSysILTypeRef tname_Array))
2625+
member val typ_Type = mkILBoxedType (mkILNonGenericTySpec (mkSysILTypeRef tname_Type))
2626+
member val typ_SByte = ILType.Value (mkILNonGenericTySpec (mkSysILTypeRef tname_SByte))
2627+
member val typ_Int16 = ILType.Value (mkILNonGenericTySpec (mkSysILTypeRef tname_Int16))
2628+
member val typ_Int32 = ILType.Value (mkILNonGenericTySpec (mkSysILTypeRef tname_Int32))
2629+
member val typ_Int64 = ILType.Value (mkILNonGenericTySpec (mkSysILTypeRef tname_Int64))
2630+
member val typ_Byte = ILType.Value (mkILNonGenericTySpec (mkSysILTypeRef tname_Byte))
2631+
member val typ_UInt16 = ILType.Value (mkILNonGenericTySpec (mkSysILTypeRef tname_UInt16))
2632+
member val typ_UInt32 = ILType.Value (mkILNonGenericTySpec (mkSysILTypeRef tname_UInt32))
2633+
member val typ_UInt64 = ILType.Value (mkILNonGenericTySpec (mkSysILTypeRef tname_UInt64))
2634+
member val typ_Single = ILType.Value (mkILNonGenericTySpec (mkSysILTypeRef tname_Single))
2635+
member val typ_Double = ILType.Value (mkILNonGenericTySpec (mkSysILTypeRef tname_Double))
2636+
member val typ_Bool = ILType.Value (mkILNonGenericTySpec (mkSysILTypeRef tname_Bool))
2637+
member val typ_Char = ILType.Value (mkILNonGenericTySpec (mkSysILTypeRef tname_Char))
2638+
member val typ_IntPtr = ILType.Value (mkILNonGenericTySpec (mkSysILTypeRef tname_IntPtr))
2639+
member val typ_UIntPtr = ILType.Value (mkILNonGenericTySpec (mkSysILTypeRef tname_UIntPtr))
2640+
member val typ_TypedReference = ILType.Value (mkILNonGenericTySpec (mkSysILTypeRef tname_TypedReference))
2641+
2642+
member x.IsPossiblePrimaryAssemblyRef(aref: ILAssemblyRef) =
2643+
aref.EqualsIgnoringVersion x.primaryAssemblyRef ||
2644+
assembliesThatForwardToPrimaryAssembly
2645+
|> Array.exists aref.EqualsIgnoringVersion
26442646

26452647
/// For debugging
26462648
[<DebuggerBrowsable(DebuggerBrowsableState.Never)>]
26472649
member x.DebugText = x.ToString()
26482650

26492651
override x.ToString() = "<ILGlobals>"
26502652

2651-
let mkILGlobals primaryScopeRef = ILGlobals primaryScopeRef
2653+
let mkILGlobals (primaryScopeRef, assembliesThatForwardToPrimaryAssembly) = ILGlobals (primaryScopeRef, assembliesThatForwardToPrimaryAssembly)
26522654

26532655
let mkNormalCall mspec = I_call (Normalcall, mspec, None)
26542656

@@ -2693,54 +2695,55 @@ let isILBoxedTy = function ILType.Boxed _ -> true | _ -> false
26932695

26942696
let isILValueTy = function ILType.Value _ -> true | _ -> false
26952697

2696-
let isPrimaryAssemblyTySpec (tspec: ILTypeSpec) n =
2698+
let isBuiltInTySpec (ilg: ILGlobals) (tspec: ILTypeSpec) n =
26972699
let tref = tspec.TypeRef
26982700
let scoref = tref.Scope
2699-
(tref.Name = n) &&
2700-
match scoref with
2701-
| ILScopeRef.Assembly n -> PrimaryAssembly.IsSomePrimaryAssembly n.Name
2702-
| ILScopeRef.Module _ -> false
2703-
| ILScopeRef.Local -> true
2701+
tref.Name = n &&
2702+
(match scoref with
2703+
| ILScopeRef.Local
2704+
| ILScopeRef.Module _ -> false
2705+
| ILScopeRef.Assembly aref -> ilg.IsPossiblePrimaryAssemblyRef aref
2706+
| ILScopeRef.PrimaryAssembly -> true)
27042707

2705-
let isILBoxedPrimaryAssemblyTy (ty: ILType) n =
2706-
isILBoxedTy ty && isPrimaryAssemblyTySpec ty.TypeSpec n
2708+
let isILBoxedBuiltInTy ilg (ty: ILType) n =
2709+
isILBoxedTy ty && isBuiltInTySpec ilg ty.TypeSpec n
27072710

2708-
let isILValuePrimaryAssemblyTy (ty: ILType) n =
2709-
isILValueTy ty && isPrimaryAssemblyTySpec ty.TypeSpec n
2711+
let isILValueBuiltInTy ilg (ty: ILType) n =
2712+
isILValueTy ty && isBuiltInTySpec ilg ty.TypeSpec n
27102713

2711-
let isILObjectTy ty = isILBoxedPrimaryAssemblyTy ty tname_Object
2714+
let isILObjectTy ilg ty = isILBoxedBuiltInTy ilg ty tname_Object
27122715

2713-
let isILStringTy ty = isILBoxedPrimaryAssemblyTy ty tname_String
2716+
let isILStringTy ilg ty = isILBoxedBuiltInTy ilg ty tname_String
27142717

2715-
let isILTypedReferenceTy ty = isILValuePrimaryAssemblyTy ty "System.TypedReference"
2718+
let isILTypedReferenceTy ilg ty = isILValueBuiltInTy ilg ty tname_TypedReference
27162719

2717-
let isILSByteTy ty = isILValuePrimaryAssemblyTy ty tname_SByte
2720+
let isILSByteTy ilg ty = isILValueBuiltInTy ilg ty tname_SByte
27182721

2719-
let isILByteTy ty = isILValuePrimaryAssemblyTy ty tname_Byte
2722+
let isILByteTy ilg ty = isILValueBuiltInTy ilg ty tname_Byte
27202723

2721-
let isILInt16Ty ty = isILValuePrimaryAssemblyTy ty tname_Int16
2724+
let isILInt16Ty ilg ty = isILValueBuiltInTy ilg ty tname_Int16
27222725

2723-
let isILUInt16Ty ty = isILValuePrimaryAssemblyTy ty tname_UInt16
2726+
let isILUInt16Ty ilg ty = isILValueBuiltInTy ilg ty tname_UInt16
27242727

2725-
let isILInt32Ty ty = isILValuePrimaryAssemblyTy ty tname_Int32
2728+
let isILInt32Ty ilg ty = isILValueBuiltInTy ilg ty tname_Int32
27262729

2727-
let isILUInt32Ty ty = isILValuePrimaryAssemblyTy ty tname_UInt32
2730+
let isILUInt32Ty ilg ty = isILValueBuiltInTy ilg ty tname_UInt32
27282731

2729-
let isILInt64Ty ty = isILValuePrimaryAssemblyTy ty tname_Int64
2732+
let isILInt64Ty ilg ty = isILValueBuiltInTy ilg ty tname_Int64
27302733

2731-
let isILUInt64Ty ty = isILValuePrimaryAssemblyTy ty tname_UInt64
2734+
let isILUInt64Ty ilg ty = isILValueBuiltInTy ilg ty tname_UInt64
27322735

2733-
let isILIntPtrTy ty = isILValuePrimaryAssemblyTy ty tname_IntPtr
2736+
let isILIntPtrTy ilg ty = isILValueBuiltInTy ilg ty tname_IntPtr
27342737

2735-
let isILUIntPtrTy ty = isILValuePrimaryAssemblyTy ty tname_UIntPtr
2738+
let isILUIntPtrTy ilg ty = isILValueBuiltInTy ilg ty tname_UIntPtr
27362739

2737-
let isILBoolTy ty = isILValuePrimaryAssemblyTy ty tname_Bool
2740+
let isILBoolTy ilg ty = isILValueBuiltInTy ilg ty tname_Bool
27382741

2739-
let isILCharTy ty = isILValuePrimaryAssemblyTy ty tname_Char
2742+
let isILCharTy ilg ty = isILValueBuiltInTy ilg ty tname_Char
27402743

2741-
let isILSingleTy ty = isILValuePrimaryAssemblyTy ty tname_Single
2744+
let isILSingleTy ilg ty = isILValueBuiltInTy ilg ty tname_Single
27422745

2743-
let isILDoubleTy ty = isILValuePrimaryAssemblyTy ty tname_Double
2746+
let isILDoubleTy ilg ty = isILValueBuiltInTy ilg ty tname_Double
27442747

27452748
// --------------------------------------------------------------------
27462749
// Rescoping
@@ -3710,7 +3713,7 @@ let getCustomAttrData (ilg: ILGlobals) cattr =
37103713

37113714
let MscorlibScopeRef = ILScopeRef.Assembly (ILAssemblyRef.Create ("mscorlib", None, Some ecmaPublicKey, true, None, None))
37123715

3713-
let EcmaMscorlibILGlobals = mkILGlobals MscorlibScopeRef
3716+
let EcmaMscorlibILGlobals = mkILGlobals (MscorlibScopeRef, [])
37143717

37153718
// ILSecurityDecl is a 'blob' having the following format:
37163719
// - A byte containing a period (.).
@@ -4006,7 +4009,8 @@ type ILReferences =
40064009
ModuleReferences: ILModuleRef list }
40074010

40084011
type ILReferencesAccumulator =
4009-
{ refsA: HashSet<ILAssemblyRef>
4012+
{ ilg: ILGlobals
4013+
refsA: HashSet<ILAssemblyRef>
40104014
refsM: HashSet<ILModuleRef> }
40114015

40124016
let emptyILRefs =
@@ -4023,6 +4027,7 @@ let refs_of_scoref s x =
40234027
| ILScopeRef.Local -> ()
40244028
| ILScopeRef.Assembly assemblyRef -> refs_of_assemblyRef s assemblyRef
40254029
| ILScopeRef.Module modref -> refs_of_modref s modref
4030+
| ILScopeRef.PrimaryAssembly -> refs_of_assemblyRef s s.ilg.primaryAssemblyRef
40264031

40274032
let refs_of_tref s (x: ILTypeRef) = refs_of_scoref s x.Scope
40284033

@@ -4219,9 +4224,10 @@ and refs_of_manifest s (m: ILAssemblyManifest) =
42194224
refs_of_custom_attrs s m.CustomAttrs
42204225
refs_of_exported_types s m.ExportedTypes
42214226

4222-
let computeILRefs modul =
4227+
let computeILRefs ilg modul =
42234228
let s =
4224-
{ refsA = HashSet<_>(HashIdentity.Structural)
4229+
{ ilg = ilg
4230+
refsA = HashSet<_>(HashIdentity.Structural)
42254231
refsM = HashSet<_>(HashIdentity.Structural) }
42264232

42274233
refs_of_modul s modul

src/absil/il.fsi

Lines changed: 39 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,9 @@ type ILAssemblyRef =
7979
member Retargetable: bool
8080
member Version: ILVersionInfo option
8181
member Locale: string option
82+
83+
member EqualsIgnoringVersion: ILAssemblyRef -> bool
84+
8285
interface System.IComparable
8386

8487
[<Sealed>]
@@ -97,7 +100,9 @@ type ILScopeRef =
97100
/// A reference to a type in a module in the same assembly
98101
| Module of ILModuleRef
99102
/// A reference to a type in another assembly
100-
| Assembly of ILAssemblyRef
103+
| Assembly of ILAssemblyRef
104+
/// A reference to a type in the primary assembly
105+
| PrimaryAssembly
101106
member IsLocalRef: bool
102107
member QualifiedName: string
103108

@@ -1393,7 +1398,8 @@ type ILExportedTypeOrForwarder =
13931398
[<NoEquality; NoComparison>]
13941399
[<Sealed>]
13951400
type ILExportedTypesAndForwarders =
1396-
member AsList: ILExportedTypeOrForwarder list
1401+
member AsList: ILExportedTypeOrForwarder list
1402+
member TryFindByName: string -> ILExportedTypeOrForwarder option
13971403

13981404
[<RequireQualifiedAccess>]
13991405
type ILResourceAccess =
@@ -1571,6 +1577,7 @@ val isTypeNameForGlobalFunctions: string -> bool
15711577
[<NoEquality; NoComparison; Class>]
15721578
type ILGlobals =
15731579
member primaryAssemblyScopeRef: ILScopeRef
1580+
member primaryAssemblyRef: ILAssemblyRef
15741581
member primaryAssemblyName: string
15751582
member typ_Object: ILType
15761583
member typ_String: ILType
@@ -1590,10 +1597,20 @@ type ILGlobals =
15901597
member typ_Double: ILType
15911598
member typ_Bool: ILType
15921599
member typ_Char: ILType
1593-
1600+
member typ_TypedReference: ILType
1601+
1602+
/// Is the given assembly possibly a primary assembly?
1603+
/// In practice, a primary assembly is an assembly that contains the System.Object type definition
1604+
/// and has no referenced assemblies.
1605+
/// However, we must consider assemblies that forward the System.Object type definition
1606+
/// to be possible primary assemblies.
1607+
/// Therefore, this will return true if the given assembly is the real primary assembly or an assembly that forwards
1608+
/// the System.Object type definition.
1609+
/// Assembly equivalency ignores the version here.
1610+
member IsPossiblePrimaryAssemblyRef: ILAssemblyRef -> bool
15941611

15951612
/// Build the table of commonly used references given functions to find types in system assemblies
1596-
val mkILGlobals: ILScopeRef -> ILGlobals
1613+
val mkILGlobals: primaryScopeRef: ILScopeRef * assembliesThatForwardToPrimaryAssembly: ILAssemblyRef list -> ILGlobals
15971614

15981615
val EcmaMscorlibILGlobals: ILGlobals
15991616

@@ -1944,23 +1961,23 @@ val instILType: ILGenericArgs -> ILType -> ILType
19441961
val ecmaPublicKey: PublicKey
19451962

19461963
/// Discriminating different important built-in types.
1947-
val isILObjectTy: ILType -> bool
1948-
val isILStringTy: ILType -> bool
1949-
val isILSByteTy: ILType -> bool
1950-
val isILByteTy: ILType -> bool
1951-
val isILInt16Ty: ILType -> bool
1952-
val isILUInt16Ty: ILType -> bool
1953-
val isILInt32Ty: ILType -> bool
1954-
val isILUInt32Ty: ILType -> bool
1955-
val isILInt64Ty: ILType -> bool
1956-
val isILUInt64Ty: ILType -> bool
1957-
val isILIntPtrTy: ILType -> bool
1958-
val isILUIntPtrTy: ILType -> bool
1959-
val isILBoolTy: ILType -> bool
1960-
val isILCharTy: ILType -> bool
1961-
val isILTypedReferenceTy: ILType -> bool
1962-
val isILDoubleTy: ILType -> bool
1963-
val isILSingleTy: ILType -> bool
1964+
val isILObjectTy: ILGlobals -> ILType -> bool
1965+
val isILStringTy: ILGlobals -> ILType -> bool
1966+
val isILSByteTy: ILGlobals -> ILType -> bool
1967+
val isILByteTy: ILGlobals -> ILType -> bool
1968+
val isILInt16Ty: ILGlobals -> ILType -> bool
1969+
val isILUInt16Ty: ILGlobals -> ILType -> bool
1970+
val isILInt32Ty: ILGlobals -> ILType -> bool
1971+
val isILUInt32Ty: ILGlobals -> ILType -> bool
1972+
val isILInt64Ty: ILGlobals -> ILType -> bool
1973+
val isILUInt64Ty: ILGlobals -> ILType -> bool
1974+
val isILIntPtrTy: ILGlobals -> ILType -> bool
1975+
val isILUIntPtrTy: ILGlobals -> ILType -> bool
1976+
val isILBoolTy: ILGlobals -> ILType -> bool
1977+
val isILCharTy: ILGlobals -> ILType -> bool
1978+
val isILTypedReferenceTy: ILGlobals -> ILType -> bool
1979+
val isILDoubleTy: ILGlobals -> ILType -> bool
1980+
val isILSingleTy: ILGlobals -> ILType -> bool
19641981

19651982
val sha1HashInt64 : byte[] -> int64
19661983
/// Get a public key token from a public key.
@@ -2002,6 +2019,6 @@ type ILReferences =
20022019
ModuleReferences: ILModuleRef list }
20032020

20042021
/// Find the full set of assemblies referenced by a module.
2005-
val computeILRefs: ILModuleDef -> ILReferences
2022+
val computeILRefs: ILGlobals -> ILModuleDef -> ILReferences
20062023
val emptyILRefs: ILReferences
20072024

0 commit comments

Comments
 (0)