@@ -219,6 +219,7 @@ let (|Nameof|_|) com ctx = function
219
219
| IdentExpr ident -> Some ident.DisplayName
220
220
| Get(_, ByKey( ExprKey( StringConst prop)), _, _) -> Some prop
221
221
| Get(_, ByKey( FieldKey fi), _, _) -> Some fi.Name
222
+ | Get(_, FieldGet( field, _), _, _) -> Some field.Name
222
223
| NestedLambda( args, Call( IdentExpr ident, info, _, _), None) ->
223
224
if List.sameLength args info.Args && List.zip args info.Args |> List.forall ( fun ( a1 , a2 ) ->
224
225
match a2 with IdentExpr id2 -> a1.Name = id2.Name | _ -> false )
@@ -385,7 +386,7 @@ let makeRefFromMutableValue com ctx (value: Expr) =
385
386
let getter = Delegate([], value, None)
386
387
let setter =
387
388
let v = makeUniqueIdent ctx Any " v"
388
- Delegate([ v], Set( value, None , IdentExpr v, None), None)
389
+ Delegate([ v], Set( value, ValueSet , IdentExpr v, None), None)
389
390
Helper.LibCall( com, " Types" , " FSharpRef" , t, [ getter; setter], isJsConstructor= true )
390
391
391
392
let turnLastArgIntoRef com ctx args =
@@ -904,7 +905,7 @@ let makePojoFromLambda com arg =
904
905
| Lambda(_, lambdaBody, _) ->
905
906
( flattenSequential lambdaBody, Some []) ||> List.foldBack ( fun statement acc ->
906
907
match acc, statement with
907
- | Some acc, Set(_, Some ( FieldKey fi), value, _) ->
908
+ | Some acc, Set(_, ByKeySet ( FieldKey fi), value, _) ->
908
909
objValue ( fi.Name, value):: acc |> Some
909
910
| _ -> None)
910
911
| _ -> None
@@ -1201,7 +1202,7 @@ let fableCoreLib (com: ICompiler) (ctx: Context) r t (i: CallInfo) (thisArg: Exp
1201
1202
| " op_Dynamic" , [ left; memb] ->
1202
1203
getExpr r t left memb |> Some
1203
1204
| " op_DynamicAssignment" , [ callee; prop; MaybeLambdaUncurriedAtCompileTime value] ->
1204
- Set( callee, Some ( ExprKey prop), value, r) |> Some
1205
+ Set( callee, ByKeySet ( ExprKey prop), value, r) |> Some
1205
1206
| ( " op_Dollar" | " createNew" as m), callee:: args ->
1206
1207
let args = destructureTupleArgs args
1207
1208
if m = " createNew" then " new $0($1...)" else " $0($1...)"
@@ -1243,7 +1244,7 @@ let fableCoreLib (com: ICompiler) (ctx: Context) r t (i: CallInfo) (thisArg: Exp
1243
1244
| _ -> None
1244
1245
1245
1246
let getReference r t expr = get r t expr " contents"
1246
- let setReference r expr value = Set( expr, Some ( ExprKey( makeStrConst " contents" )), value, r)
1247
+ let setReference r expr value = Set( expr, ByKeySet ( ExprKey( makeStrConst " contents" )), value, r)
1247
1248
let newReference com r t value = Helper.LibCall( com, " Types" , " FSharpRef" , t, [ value], isJsConstructor= true , ?loc= r)
1248
1249
1249
1250
let references ( com : ICompiler ) ( ctx : Context ) r t ( i : CallInfo ) ( thisArg : Expr option ) ( args : Expr list ) =
@@ -1690,7 +1691,7 @@ let resizeArrays (com: ICompiler) (ctx: Context) r (t: Type) (i: CallInfo) (this
1690
1691
|> asOptimizable " array"
1691
1692
|> Some
1692
1693
| " get_Item" , Some ar, [ idx] -> getExpr r t ar idx |> Some
1693
- | " set_Item" , Some ar, [ idx; value] -> Set( ar, Some ( ExprKey idx), value, r) |> Some
1694
+ | " set_Item" , Some ar, [ idx; value] -> Set( ar, ByKeySet ( ExprKey idx), value, r) |> Some
1694
1695
| " Add" , Some ar, [ arg] ->
1695
1696
" void ($0)" |> emitJsExpr r t [ Helper.InstanceCall( ar, " push" , t, [ arg])] |> Some
1696
1697
| " Remove" , Some ar, [ arg] ->
@@ -1785,7 +1786,7 @@ let arrays (com: ICompiler) (ctx: Context) r (t: Type) (i: CallInfo) (thisArg: E
1785
1786
match i.CompiledName, thisArg, args with
1786
1787
| " get_Length" , Some arg, _ -> get r t arg " length" |> Some
1787
1788
| " get_Item" , Some arg, [ idx] -> getExpr r t arg idx |> Some
1788
- | " set_Item" , Some arg, [ idx; value] -> Set( arg, Some ( ExprKey idx), value, r) |> Some
1789
+ | " set_Item" , Some arg, [ idx; value] -> Set( arg, ByKeySet ( ExprKey idx), value, r) |> Some
1789
1790
| " Copy" , None, [_ source; _ sourceIndex; _ target; _ targetIndex; _ count] -> copyToArray com r t i args
1790
1791
| " Copy" , None, [ source; target; count] -> copyToArray com r t i [ source; makeIntConst 0 ; target; makeIntConst 0 ; count]
1791
1792
| " IndexOf" , None, args ->
@@ -1815,7 +1816,7 @@ let arrayModule (com: ICompiler) (ctx: Context) r (t: Type) (i: CallInfo) (_: Ex
1815
1816
| ( " Length" | " Count" ), [ arg] -> get r t arg " length" |> Some
1816
1817
| " Item" , [ idx; ar] -> getExpr r t ar idx |> Some
1817
1818
| " Get" , [ ar; idx] -> getExpr r t ar idx |> Some
1818
- | " Set" , [ ar; idx; value] -> Set( ar, Some ( ExprKey idx), value, r) |> Some
1819
+ | " Set" , [ ar; idx; value] -> Set( ar, ByKeySet ( ExprKey idx), value, r) |> Some
1819
1820
| " ZeroCreate" , [ count] -> createArray count None |> Some
1820
1821
| " Create" , [ count; value] -> createArray count ( Some value) |> Some
1821
1822
| " Empty" , _ ->
@@ -2195,7 +2196,7 @@ let intrinsicFunctions (com: ICompiler) (ctx: Context) r t (i: CallInfo) (thisAr
2195
2196
| " MakeDecimal" , _, _ -> decimals com ctx r t i thisArg args
2196
2197
| " GetString" , _, [ ar; idx]
2197
2198
| " GetArray" , _, [ ar; idx] -> getExpr r t ar idx |> Some
2198
- | " SetArray" , _, [ ar; idx; value] -> Set( ar, Some ( ExprKey idx), value, r) |> Some
2199
+ | " SetArray" , _, [ ar; idx; value] -> Set( ar, ByKeySet ( ExprKey idx), value, r) |> Some
2199
2200
| ( " GetArraySlice" | " GetStringSlice" ), None, [ ar; lower; upper] ->
2200
2201
let upper =
2201
2202
match upper with
@@ -2576,7 +2577,7 @@ let timers (com: ICompiler) (ctx: Context) r t (i: CallInfo) (thisArg: Expr opti
2576
2577
match i.CompiledName, thisArg, args with
2577
2578
| " .ctor" , _, _ -> Helper.LibCall( com, " Timer" , " default" , t, args, i.SignatureArgTypes, isJsConstructor= true , ?loc= r) |> Some
2578
2579
| Naming.StartsWith " get_" meth, Some x, _ -> get r t x meth |> Some
2579
- | Naming.StartsWith " set_" meth, Some x, [ value] -> Set( x, Some ( ExprKey( makeStrConst meth)), value, r) |> Some
2580
+ | Naming.StartsWith " set_" meth, Some x, [ value] -> Set( x, ByKeySet ( ExprKey( makeStrConst meth)), value, r) |> Some
2580
2581
| meth, Some x, args -> Helper.InstanceCall( x, meth, t, args, i.SignatureArgTypes, ?loc= r) |> Some
2581
2582
| _ -> None
2582
2583
0 commit comments