Math.NET Numerics
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

38 lines
1.6 KiB

// (c) Microsoft Corporation. All rights reserved
#light
module internal Microsoft.FSharp.Compiler.Detuple
open Internal.Utilities
open Microsoft.FSharp.Compiler.AbstractIL
open Microsoft.FSharp.Compiler.AbstractIL.Internal
open Microsoft.FSharp.Compiler
open Microsoft.FSharp.Compiler.Tast
(* detuple pass: *)
val DetupleImplFile : ccu -> Env.TcGlobals -> TypedImplFile -> TypedImplFile
module GlobalUsageAnalysis =
val GetValsBoundInExpr : expr -> Zset.set<Val>
type accessor = PTup of int * typ list
/// xinfo is "expr information".
/// This could extend to be a full graph view of the expr.
/// Later could support "safe" change operations, and optimisations could be in terms of those.
type xinfo =
{ /// v -> context / APP inst args
xinfo_uses : Zmap.map<Val,(accessor list * typ list * expr list) list>;
/// v -> binding repr
xinfo_eqns : Zmap.map<Val,expr>;
/// bound in a decision tree?
xinfo_dtree : Zset.set<Val>;
/// v -> v list * recursive? -- the others in the mutual binding
xinfo_mubinds : Zmap.map<Val,(bool * FlatVals)>;
/// val not defined under lambdas
xinfo_toplevel : Zset.set<Val>;
/// top of expr toplevel? (true)
xinfo_top : bool;
}
val GetUsageInfoOfImplFile : Env.TcGlobals -> TypedImplFile -> xinfo