Skip to content

Commit 946c6b1

Browse files
committed
unify logic
1 parent 967a472 commit 946c6b1

File tree

3 files changed

+12
-18
lines changed

3 files changed

+12
-18
lines changed

src/Compiler/AbstractIL/il.fs

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2587,6 +2587,14 @@ let inline internal resetTypeKind flags =
25872587
let (|HasFlag|_|) (flag: ILTypeDefAdditionalFlags) flags =
25882588
flags &&& flag = flag
25892589

2590+
let inline typeKindByNames extendsName typeName =
2591+
match extendsName with
2592+
| "System.Enum" -> ILTypeDefAdditionalFlags.Enum
2593+
| "System.Delegate" when typeName <> "System.MulticastDelegate" -> ILTypeDefAdditionalFlags.Delegate
2594+
| "System.MulticastDelegate" -> ILTypeDefAdditionalFlags.Delegate
2595+
| "System.ValueType" when typeName <> "System.Enum" -> ILTypeDefAdditionalFlags.ValueType
2596+
| _ -> ILTypeDefAdditionalFlags.Class
2597+
25902598
let typeKindOfFlags nm (super: ILType option) flags =
25912599
if (flags &&& 0x00000020) <> 0x0 then
25922600
ILTypeDefAdditionalFlags.Interface
@@ -2595,18 +2603,7 @@ let typeKindOfFlags nm (super: ILType option) flags =
25952603
| None -> ILTypeDefAdditionalFlags.Class
25962604
| Some ty ->
25972605
let name = ty.TypeSpec.Name
2598-
2599-
if name = "System.Enum" then
2600-
ILTypeDefAdditionalFlags.Enum
2601-
elif
2602-
(name = "System.Delegate" && nm <> "System.MulticastDelegate")
2603-
|| name = "System.MulticastDelegate"
2604-
then
2605-
ILTypeDefAdditionalFlags.Delegate
2606-
elif name = "System.ValueType" && nm <> "System.Enum" then
2607-
ILTypeDefAdditionalFlags.ValueType
2608-
else
2609-
ILTypeDefAdditionalFlags.Class
2606+
typeKindByNames name nm
26102607

26112608
let convertTypeAccessFlags access =
26122609
match access with

src/Compiler/AbstractIL/il.fsi

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1515,6 +1515,8 @@ type ILTypeDefAdditionalFlags =
15151515

15161516
val (|HasFlag|_|): flag: ILTypeDefAdditionalFlags -> flags: ILTypeDefAdditionalFlags -> bool
15171517

1518+
val inline internal typeKindByNames: extendsName: string -> typeName: string -> ILTypeDefAdditionalFlags
1519+
15181520
/// Represents IL Type Definitions.
15191521
[<NoComparison; NoEquality>]
15201522
type ILTypeDef =

src/Compiler/AbstractIL/ilread.fs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2130,12 +2130,7 @@ and typeDefReader ctxtH : ILTypeDefStored =
21302130
else
21312131
""
21322132

2133-
match extendsName with
2134-
| "System.Enum" -> ILTypeDefAdditionalFlags.Enum
2135-
| "System.Delegate" when nm <> "System.MulticastDelegate" -> ILTypeDefAdditionalFlags.Delegate
2136-
| "System.MulticastDelegate" -> ILTypeDefAdditionalFlags.Delegate
2137-
| "System.ValueType" when nm <> "System.Enum" -> ILTypeDefAdditionalFlags.ValueType
2138-
| _ -> ILTypeDefAdditionalFlags.Class
2133+
typeKindByNames extendsName nm
21392134

21402135
let super = seekReadSuperType ctxt numTypars AsObject extendsIdx
21412136
let layout = typeLayoutOfFlags ctxt mdv flags idx

0 commit comments

Comments
 (0)