@@ -219,6 +219,7 @@ let (|Nameof|_|) com ctx = function
219219 | IdentExpr ident -> Some ident.DisplayName
220220 | Get(_, ByKey( ExprKey( StringConst prop)), _, _) -> Some prop
221221 | Get(_, ByKey( FieldKey fi), _, _) -> Some fi.Name
222+ | Get(_, FieldGet( field, _), _, _) -> Some field.Name
222223 | NestedLambda( args, Call( IdentExpr ident, info, _, _), None) ->
223224 if List.sameLength args info.Args && List.zip args info.Args |> List.forall ( fun ( a1 , a2 ) ->
224225 match a2 with IdentExpr id2 -> a1.Name = id2.Name | _ -> false )
@@ -385,7 +386,7 @@ let makeRefFromMutableValue com ctx (value: Expr) =
385386 let getter = Delegate([], value, None)
386387 let setter =
387388 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)
389390 Helper.LibCall( com, " Types" , " FSharpRef" , t, [ getter; setter], isJsConstructor= true )
390391
391392let turnLastArgIntoRef com ctx args =
@@ -904,7 +905,7 @@ let makePojoFromLambda com arg =
904905 | Lambda(_, lambdaBody, _) ->
905906 ( flattenSequential lambdaBody, Some []) ||> List.foldBack ( fun statement acc ->
906907 match acc, statement with
907- | Some acc, Set(_, Some ( FieldKey fi), value, _) ->
908+ | Some acc, Set(_, ByKeySet ( FieldKey fi), value, _) ->
908909 objValue ( fi.Name, value):: acc |> Some
909910 | _ -> None)
910911 | _ -> None
@@ -1201,7 +1202,7 @@ let fableCoreLib (com: ICompiler) (ctx: Context) r t (i: CallInfo) (thisArg: Exp
12011202 | " op_Dynamic" , [ left; memb] ->
12021203 getExpr r t left memb |> Some
12031204 | " op_DynamicAssignment" , [ callee; prop; MaybeLambdaUncurriedAtCompileTime value] ->
1204- Set( callee, Some ( ExprKey prop), value, r) |> Some
1205+ Set( callee, ByKeySet ( ExprKey prop), value, r) |> Some
12051206 | ( " op_Dollar" | " createNew" as m), callee:: args ->
12061207 let args = destructureTupleArgs args
12071208 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
12431244 | _ -> None
12441245
12451246let 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)
12471248let newReference com r t value = Helper.LibCall( com, " Types" , " FSharpRef" , t, [ value], isJsConstructor= true , ?loc= r)
12481249
12491250let 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
16901691 |> asOptimizable " array"
16911692 |> Some
16921693 | " 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
16941695 | " Add" , Some ar, [ arg] ->
16951696 " void ($0)" |> emitJsExpr r t [ Helper.InstanceCall( ar, " push" , t, [ arg])] |> Some
16961697 | " Remove" , Some ar, [ arg] ->
@@ -1785,7 +1786,7 @@ let arrays (com: ICompiler) (ctx: Context) r (t: Type) (i: CallInfo) (thisArg: E
17851786 match i.CompiledName, thisArg, args with
17861787 | " get_Length" , Some arg, _ -> get r t arg " length" |> Some
17871788 | " 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
17891790 | " Copy" , None, [_ source; _ sourceIndex; _ target; _ targetIndex; _ count] -> copyToArray com r t i args
17901791 | " Copy" , None, [ source; target; count] -> copyToArray com r t i [ source; makeIntConst 0 ; target; makeIntConst 0 ; count]
17911792 | " IndexOf" , None, args ->
@@ -1815,7 +1816,7 @@ let arrayModule (com: ICompiler) (ctx: Context) r (t: Type) (i: CallInfo) (_: Ex
18151816 | ( " Length" | " Count" ), [ arg] -> get r t arg " length" |> Some
18161817 | " Item" , [ idx; ar] -> getExpr r t ar idx |> Some
18171818 | " 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
18191820 | " ZeroCreate" , [ count] -> createArray count None |> Some
18201821 | " Create" , [ count; value] -> createArray count ( Some value) |> Some
18211822 | " Empty" , _ ->
@@ -2195,7 +2196,7 @@ let intrinsicFunctions (com: ICompiler) (ctx: Context) r t (i: CallInfo) (thisAr
21952196 | " MakeDecimal" , _, _ -> decimals com ctx r t i thisArg args
21962197 | " GetString" , _, [ ar; idx]
21972198 | " 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
21992200 | ( " GetArraySlice" | " GetStringSlice" ), None, [ ar; lower; upper] ->
22002201 let upper =
22012202 match upper with
@@ -2576,7 +2577,7 @@ let timers (com: ICompiler) (ctx: Context) r t (i: CallInfo) (thisArg: Expr opti
25762577 match i.CompiledName, thisArg, args with
25772578 | " .ctor" , _, _ -> Helper.LibCall( com, " Timer" , " default" , t, args, i.SignatureArgTypes, isJsConstructor= true , ?loc= r) |> Some
25782579 | 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
25802581 | meth, Some x, args -> Helper.InstanceCall( x, meth, t, args, i.SignatureArgTypes, ?loc= r) |> Some
25812582 | _ -> None
25822583
0 commit comments