forked from auduchinok/fsharp
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathilx.fsi
More file actions
134 lines (105 loc) · 4.49 KB
/
Copy pathilx.fsi
File metadata and controls
134 lines (105 loc) · 4.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information.
/// ILX extensions to Abstract IL types and instructions F#
module internal FSharp.Compiler.AbstractIL.Extensions.ILX.Types
open Internal.Utilities
open FSharp.Compiler.AbstractIL
open FSharp.Compiler.AbstractIL.Internal
open FSharp.Compiler.AbstractIL.IL
// --------------------------------------------------------------------
// Union references
// --------------------------------------------------------------------
[<Sealed>]
type IlxUnionField =
new : ILFieldDef -> IlxUnionField
member Type : ILType
member Name : string
/// The name used for the field in parameter or IL field position.
member LowerName : string
member ILField : ILFieldDef
type IlxUnionAlternative =
{ altName: string
altFields: IlxUnionField[]
altCustomAttrs: ILAttributes }
member FieldDefs : IlxUnionField[]
member FieldDef : int -> IlxUnionField
member Name : string
member IsNullary : bool
member FieldTypes : ILType[]
type IlxUnionHasHelpers =
| NoHelpers
| AllHelpers
| SpecialFSharpListHelpers
| SpecialFSharpOptionHelpers
type IlxUnionRef =
| IlxUnionRef of boxity: ILBoxity * ILTypeRef * IlxUnionAlternative[] * bool (* cudNullPermitted *) * IlxUnionHasHelpers (* cudHasHelpers *)
type IlxUnionSpec =
| IlxUnionSpec of IlxUnionRef * ILGenericArgs
member DeclaringType : ILType
member GenericArgs : ILGenericArgs
member Alternatives : IlxUnionAlternative list
member AlternativesArray : IlxUnionAlternative[]
member Boxity : ILBoxity
member TypeRef : ILTypeRef
member IsNullPermitted : bool
member HasHelpers : IlxUnionHasHelpers
member Alternative : int -> IlxUnionAlternative
member FieldDef : int -> int -> IlxUnionField
// --------------------------------------------------------------------
// Closure references
// --------------------------------------------------------------------
type IlxClosureLambdas =
| Lambdas_forall of ILGenericParameterDef * IlxClosureLambdas
| Lambdas_lambda of ILParameter * IlxClosureLambdas
| Lambdas_return of ILType
type IlxClosureFreeVar =
{ fvName: string
fvCompilerGenerated:bool
fvType: ILType }
type IlxClosureRef =
| IlxClosureRef of ILTypeRef * IlxClosureLambdas * IlxClosureFreeVar[]
type IlxClosureSpec =
| IlxClosureSpec of IlxClosureRef * ILGenericArgs * ILType
member TypeRef : ILTypeRef
member ILType : ILType
member ClosureRef : IlxClosureRef
member FormalLambdas : IlxClosureLambdas
member GenericArgs : ILGenericArgs
static member Create : IlxClosureRef * ILGenericArgs -> IlxClosureSpec
member Constructor : ILMethodSpec
/// IlxClosureApps - i.e. types being applied at a callsite.
type IlxClosureApps =
| Apps_tyapp of ILType * IlxClosureApps
| Apps_app of ILType * IlxClosureApps
| Apps_done of ILType
// --------------------------------------------------------------------
// ILX extensions to the kinds of type definitions available
// --------------------------------------------------------------------
type IlxClosureInfo =
{ cloStructure: IlxClosureLambdas
cloFreeVars: IlxClosureFreeVar[]
cloCode: Lazy<ILMethodBody> }
type IlxUnionInfo =
{ /// Is the representation public?
cudReprAccess: ILMemberAccess
/// Are the representation helpers public?
cudHelpersAccess: ILMemberAccess
/// Generate the helpers?
cudHasHelpers: IlxUnionHasHelpers
cudDebugProxies: bool
cudDebugDisplayAttributes: ILAttribute list
cudAlternatives: IlxUnionAlternative[]
cudNullPermitted: bool
/// Debug info for generated code for classunions.
cudWhere: ILSourceMarker option
}
// --------------------------------------------------------------------
// MS-ILX constructs: Closures, thunks, classunions
// --------------------------------------------------------------------
val instAppsAux: int -> ILGenericArgs -> IlxClosureApps -> IlxClosureApps
val destTyFuncApp: IlxClosureApps -> ILType * IlxClosureApps
val mkILFormalCloRef: ILGenericParameterDefs -> IlxClosureRef -> IlxClosureSpec
// --------------------------------------------------------------------
// MS-ILX: Unions
// --------------------------------------------------------------------
val actualTypOfIlxUnionField: IlxUnionSpec -> int -> int -> ILType
val mkILFreeVar: string * bool * ILType -> IlxClosureFreeVar