@@ -835,9 +835,7 @@ module Util =
835835 let rec checkCrossRefs tempVars allArgs = function
836836 | [] -> tempVars
837837 | ( argId, _ arg):: rest ->
838- let found = allArgs |> List.exists ( FableTransforms.deepExists ( function
839- | Fable.IdentExpr i -> argId = i.Name
840- | _ -> false ))
838+ let found = allArgs |> List.exists ( FableTransforms.isIdentUsed argId)
841839 let tempVars =
842840 if found then
843841 let tempVarName = getUniqueNameInDeclarationScope ctx ( argId + " _tmp" )
@@ -907,36 +905,24 @@ module Util =
907905 // | Fable.NewList (headAndTail, _) when List.contains "FABLE_LIBRARY" com.Options.Define ->
908906 // makeList com ctx r headAndTail
909907 // Optimization for bundle size: compile list literals as List.ofArray
910- | Replacements.ListLiteral( exprs, t) ->
911- [| List.rev exprs |> makeArray com ctx|]
912- |> libCall com ctx r " List" " newList"
913- // match exprs with
914- // | [] -> libCall com ctx r "List" "empty" [||]
915- // | [TransformExpr com ctx expr] -> libCall com ctx r "List" "singleton" [|expr|]
916- // | exprs -> [|makeArray com ctx exprs|] |> libCall com ctx r "List" "ofArray"
917908 | Fable.NewList ( headAndTail, _) ->
918- match headAndTail with
919- | None -> libCall com ctx r " List" " empty" [||]
920- | Some( TransformExpr com ctx head, TransformExpr com ctx tail) ->
909+ let rec getItems acc = function
910+ | None -> List.rev acc, None
911+ | Some( head, Fable.Value( Fable.NewList( tail, _),_)) -> getItems ( head:: acc) tail
912+ | Some( head, tail) -> List.rev ( head:: acc), Some tail
913+ match getItems [] headAndTail with
914+ | [], None ->
915+ libCall com ctx r " List" " empty" [||]
916+ | [ TransformExpr com ctx expr], None ->
917+ libCall com ctx r " List" " singleton" [| expr|]
918+ | exprs, None ->
919+ [| List.rev exprs |> makeArray com ctx|]
920+ |> libCall com ctx r " List" " newList"
921+ | [ TransformExpr com ctx head], Some( TransformExpr com ctx tail) ->
921922 libCall com ctx r " List" " cons" [| head; tail|]
922-
923- // let rec getItems acc = function
924- // | None -> List.rev acc, None
925- // | Some(head, Fable.Value(Fable.NewList(tail, _),_)) -> getItems (head::acc) tail
926- // | Some(head, tail) -> List.rev (head::acc), Some tail
927- // match getItems [] headAndTail with
928- // | [], None ->
929- // libCall com ctx r "List" "empty" [||]
930- // | [TransformExpr com ctx expr], None ->
931- // libCall com ctx r "List" "singleton" [|expr|]
932- // | exprs, None ->
933- // [|makeArray com ctx exprs|]
934- // |> libCall com ctx r "List" "ofArray"
935- // | [TransformExpr com ctx head], Some(TransformExpr com ctx tail) ->
936- // libCall com ctx r "List" "cons" [|head; tail|]
937- // | exprs, Some(TransformExpr com ctx tail) ->
938- // [|makeArray com ctx exprs; tail|]
939- // |> libCall com ctx r "List" "ofArrayWithTail"
923+ | exprs, Some( TransformExpr com ctx tail) ->
924+ [| List.rev exprs |> makeArray com ctx; tail|]
925+ |> libCall com ctx r " List" " newListWithTail"
940926 | Fable.NewOption ( value, t) ->
941927 match value with
942928 | Some ( TransformExpr com ctx e) ->
@@ -1191,11 +1177,11 @@ module Util =
11911177
11921178 | Fable.ListHead ->
11931179 // get range (com.TransformAsExpr(ctx, fableExpr)) "head"
1194- libCall com ctx range " List" " head " [| com.TransformAsExpr( ctx, fableExpr)|]
1180+ libCall com ctx range " List" " head_ " [| com.TransformAsExpr( ctx, fableExpr)|]
11951181
11961182 | Fable.ListTail ->
11971183 // get range (com.TransformAsExpr(ctx, fableExpr)) "tail"
1198- libCall com ctx range " List" " tail " [| com.TransformAsExpr( ctx, fableExpr)|]
1184+ libCall com ctx range " List" " tail_ " [| com.TransformAsExpr( ctx, fableExpr)|]
11991185
12001186 | Fable.TupleIndex index ->
12011187 match fableExpr with
0 commit comments