Skip to content

Commit 42e7444

Browse files
alfonsogarciacaroncave
authored andcommitted
Update Exprs.fs
1 parent 99f1f7a commit 42e7444

File tree

1 file changed

+20
-2
lines changed

1 file changed

+20
-2
lines changed

src/fsharp/symbols/Exprs.fs

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,11 @@ module ExprTranslationImpl =
5151
member env.BindSubstVal v e =
5252
{ env with substVals = env.substVals.Add v e }
5353

54-
member env.BindVals vs = (env, vs) ||> List.fold (fun env v -> env.BindVal v)
55-
member env.BindCurriedVals vsl = (env, vsl) ||> List.fold (fun env vs -> env.BindVals vs)
54+
member env.BindVals vs =
55+
(env, vs) ||> List.fold (fun env v -> env.BindVal v)
56+
57+
member env.BindCurriedVals vsl =
58+
(env, vsl) ||> List.fold (fun env vs -> env.BindVals vs)
5659

5760
exception IgnoringPartOfQuotedTermWarning of string * Range.range
5861

@@ -81,6 +84,8 @@ type E =
8184
| FSharpFieldGet of FSharpExpr option * FSharpType * FSharpField
8285
| FSharpFieldSet of FSharpExpr option * FSharpType * FSharpField * FSharpExpr
8386
| NewUnionCase of FSharpType * FSharpUnionCase * FSharpExpr list
87+
| NewAnonRecord of FSharpType * FSharpExpr list
88+
| AnonRecordGet of FSharpExpr * FSharpType * int
8489
| UnionCaseGet of FSharpExpr * FSharpType * FSharpUnionCase * FSharpField
8590
| UnionCaseSet of FSharpExpr * FSharpType * FSharpUnionCase * FSharpField * FSharpExpr
8691
| UnionCaseTag of FSharpExpr * FSharpType
@@ -134,6 +139,8 @@ and [<Sealed>] FSharpExpr (cenv, f: (unit -> FSharpExpr) option, e: E, m:range,
134139
| E.Let ((_bindingVar, bindingExpr), b) -> [bindingExpr;b]
135140
| E.LetRec (ves, b) -> (List.map snd ves) @ [b]
136141
| E.NewRecord (_recordType, es) -> es
142+
| E.NewAnonRecord (_recordType, es) -> es
143+
| E.AnonRecordGet (e, _recordType, _n) -> [e]
137144
| E.NewUnionCase (_unionType, _unionCase, es) -> es
138145
| E.NewTuple (_tupleType, es) -> es
139146
| E.TupleGet (_tupleType, _itemIndex, tupleExpr) -> [tupleExpr]
@@ -559,6 +566,11 @@ module FSharpExprConvert =
559566
let argsR = ConvExprs cenv env args
560567
E.NewUnionCase(typR, mkR, argsR)
561568

569+
| TOp.AnonRecd anonInfo, _, _ ->
570+
let typR = ConvType cenv (mkAnyAnonRecdTy cenv.g anonInfo tyargs)
571+
let argsR = ConvExprs cenv env args
572+
E.NewAnonRecord(typR, argsR)
573+
562574
| TOp.Tuple tupInfo, tyargs, _ ->
563575
let tyR = ConvType cenv (mkAnyTupledTy cenv.g tupInfo tyargs)
564576
let argsR = ConvExprs cenv env args
@@ -575,6 +587,10 @@ module FSharpExprConvert =
575587
let projR = FSharpField(cenv, ucref, n)
576588
E.UnionCaseGet(ConvExpr cenv env e1, typR, mkR, projR)
577589

590+
| TOp.AnonRecdGet (anonInfo, n), tyargs, [e1] ->
591+
let typR = ConvType cenv (mkAnyAnonRecdTy cenv.g anonInfo tyargs)
592+
E.AnonRecordGet(ConvExpr cenv env e1, typR, n)
593+
578594
| TOp.UnionCaseFieldSet (ucref, n), tyargs, [e1;e2] ->
579595
let mkR = ConvUnionCaseRef cenv ucref
580596
let typR = ConvType cenv (mkAppTy ucref.TyconRef tyargs)
@@ -1282,12 +1298,14 @@ module BasicPatterns =
12821298
let (|Let|_|) (e:FSharpExpr) = match e.E with E.Let ((v, e), b) -> Some ((v, e), b) | _ -> None
12831299
let (|LetRec|_|) (e:FSharpExpr) = match e.E with E.LetRec (ves, b) -> Some (ves, b) | _ -> None
12841300
let (|NewRecord|_|) (e:FSharpExpr) = match e.E with E.NewRecord (ty, es) -> Some (ty, es) | _ -> None
1301+
let (|NewAnonRecord|_|) (e:FSharpExpr) = match e.E with E.NewAnonRecord (ty, es) -> Some (ty, es) | _ -> None
12851302
let (|NewUnionCase|_|) (e:FSharpExpr) = match e.E with E.NewUnionCase (e, tys, es) -> Some (e, tys, es) | _ -> None
12861303
let (|NewTuple|_|) (e:FSharpExpr) = match e.E with E.NewTuple (ty, es) -> Some (ty, es) | _ -> None
12871304
let (|TupleGet|_|) (e:FSharpExpr) = match e.E with E.TupleGet (ty, n, es) -> Some (ty, n, es) | _ -> None
12881305
let (|Call|_|) (e:FSharpExpr) = match e.E with E.Call (a, b, c, d, e) -> Some (a, b, c, d, e) | _ -> None
12891306
let (|NewObject|_|) (e:FSharpExpr) = match e.E with E.NewObject (a, b, c) -> Some (a, b, c) | _ -> None
12901307
let (|FSharpFieldGet|_|) (e:FSharpExpr) = match e.E with E.FSharpFieldGet (a, b, c) -> Some (a, b, c) | _ -> None
1308+
let (|AnonRecordGet|_|) (e:FSharpExpr) = match e.E with E.AnonRecordGet (a, b, c) -> Some (a, b, c) | _ -> None
12911309
let (|FSharpFieldSet|_|) (e:FSharpExpr) = match e.E with E.FSharpFieldSet (a, b, c, d) -> Some (a, b, c, d) | _ -> None
12921310
let (|UnionCaseGet|_|) (e:FSharpExpr) = match e.E with E.UnionCaseGet (a, b, c, d) -> Some (a, b, c, d) | _ -> None
12931311
let (|UnionCaseTag|_|) (e:FSharpExpr) = match e.E with E.UnionCaseTag (a, b) -> Some (a, b) | _ -> None

0 commit comments

Comments
 (0)