@@ -1954,22 +1954,17 @@ type ILTypeDefKind =
19541954 | Enum
19551955 | Delegate
19561956
1957- let typeKindOfFlags nm _mdefs _fdefs ( super : ILType option ) flags =
1957+ let typeKindOfFlags nm ( super : ILType option ) flags =
19581958 if ( flags &&& 0x00000020 ) <> 0x0 then ILTypeDefKind.Interface
19591959 else
1960- let isEnum , isDelegate , isMulticastDelegate , isValueType =
1961- match super with
1962- | None -> false , false , false , false
1963- | Some ty ->
1964- ty.TypeSpec.Name = " System.Enum" ,
1965- ty.TypeSpec.Name = " System.Delegate" ,
1966- ty.TypeSpec.Name = " System.MulticastDelegate" ,
1967- ty.TypeSpec.Name = " System.ValueType" && nm <> " System.Enum"
1968- let selfIsMulticastDelegate = nm = " System.MulticastDelegate"
1969- if isEnum then ILTypeDefKind.Enum
1970- elif ( isDelegate && not selfIsMulticastDelegate) || isMulticastDelegate then ILTypeDefKind.Delegate
1971- elif isValueType then ILTypeDefKind.ValueType
1972- else ILTypeDefKind.Class
1960+ match super with
1961+ | None -> ILTypeDefKind.Class
1962+ | Some ty ->
1963+ let name = ty.TypeSpec.Name
1964+ if name = " System.Enum" then ILTypeDefKind.Enum
1965+ elif ( name = " System.Delegate" && nm <> " System.MulticastDelegate" ) || name = " System.MulticastDelegate" then ILTypeDefKind.Delegate
1966+ elif name = " System.ValueType" && nm <> " System.Enum" then ILTypeDefKind.ValueType
1967+ else ILTypeDefKind.Class
19731968
19741969let convertTypeAccessFlags access =
19751970 match access with
@@ -2071,11 +2066,11 @@ type ILTypeDef(name: string, attributes: TypeAttributes, layout: ILTypeDefLayout
20712066
20722067 member x.SecurityDecls = x.SecurityDeclsStored.GetSecurityDecls x.MetadataIndex
20732068
2074- member x.IsClass = ( typeKindOfFlags x.Name x.Methods x.Fields x. Extends ( int x.Attributes)) = ILTypeDefKind.Class
2075- member x.IsStruct = ( typeKindOfFlags x.Name x.Methods x.Fields x. Extends ( int x.Attributes)) = ILTypeDefKind.ValueType
2076- member x.IsInterface = ( typeKindOfFlags x.Name x.Methods x.Fields x. Extends ( int x.Attributes)) = ILTypeDefKind.Interface
2077- member x.IsEnum = ( typeKindOfFlags x.Name x.Methods x.Fields x. Extends ( int x.Attributes)) = ILTypeDefKind.Enum
2078- member x.IsDelegate = ( typeKindOfFlags x.Name x.Methods x.Fields x. Extends ( int x.Attributes)) = ILTypeDefKind.Delegate
2069+ member x.IsClass = ( typeKindOfFlags x.Name x.Extends ( int x.Attributes)) = ILTypeDefKind.Class
2070+ member x.IsStruct = ( typeKindOfFlags x.Name x.Extends ( int x.Attributes)) = ILTypeDefKind.ValueType
2071+ member x.IsInterface = ( typeKindOfFlags x.Name x.Extends ( int x.Attributes)) = ILTypeDefKind.Interface
2072+ member x.IsEnum = ( typeKindOfFlags x.Name x.Extends ( int x.Attributes)) = ILTypeDefKind.Enum
2073+ member x.IsDelegate = ( typeKindOfFlags x.Name x.Extends ( int x.Attributes)) = ILTypeDefKind.Delegate
20792074 member x.Access = typeAccessOfFlags ( int x.Attributes)
20802075 member x.IsAbstract = x.Attributes &&& TypeAttributes.Abstract <> enum 0
20812076 member x.IsSealed = x.Attributes &&& TypeAttributes.Sealed <> enum 0
0 commit comments