@@ -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" )
@@ -921,36 +919,24 @@ module Util =
921919 // | Fable.NewList (headAndTail, _) when List.contains "FABLE_LIBRARY" com.Options.Define ->
922920 // makeList com ctx r headAndTail
923921 // Optimization for bundle size: compile list literals as List.ofArray
924- | Replacements.ListLiteral( exprs, t) ->
925- [| List.rev exprs |> makeArray com ctx|]
926- |> libCall com ctx r " List" " newList"
927- // match exprs with
928- // | [] -> libCall com ctx r "List" "empty" [||]
929- // | [TransformExpr com ctx expr] -> libCall com ctx r "List" "singleton" [|expr|]
930- // | exprs -> [|makeArray com ctx exprs|] |> libCall com ctx r "List" "ofArray"
931922 | Fable.NewList ( headAndTail, _) ->
932- match headAndTail with
933- | None -> libCall com ctx r " List" " empty" [||]
934- | Some( TransformExpr com ctx head, TransformExpr com ctx tail) ->
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+ [| List.rev exprs |> makeArray com ctx|]
934+ |> libCall com ctx r " List" " newList"
935+ | [ TransformExpr com ctx head], Some( TransformExpr com ctx tail) ->
935936 libCall com ctx r " List" " cons" [| head; tail|]
936-
937- // let rec getItems acc = function
938- // | None -> List.rev acc, None
939- // | Some(head, Fable.Value(Fable.NewList(tail, _),_)) -> getItems (head::acc) tail
940- // | Some(head, tail) -> List.rev (head::acc), Some tail
941- // match getItems [] headAndTail with
942- // | [], None ->
943- // libCall com ctx r "List" "empty" [||]
944- // | [TransformExpr com ctx expr], None ->
945- // libCall com ctx r "List" "singleton" [|expr|]
946- // | exprs, None ->
947- // [|makeArray com ctx exprs|]
948- // |> libCall com ctx r "List" "ofArray"
949- // | [TransformExpr com ctx head], Some(TransformExpr com ctx tail) ->
950- // libCall com ctx r "List" "cons" [|head; tail|]
951- // | exprs, Some(TransformExpr com ctx tail) ->
952- // [|makeArray com ctx exprs; tail|]
953- // |> libCall com ctx r "List" "ofArrayWithTail"
937+ | exprs, Some( TransformExpr com ctx tail) ->
938+ [| List.rev exprs |> makeArray com ctx; tail|]
939+ |> libCall com ctx r " List" " newListWithTail"
954940 | Fable.NewOption ( value, t) ->
955941 match value with
956942 | Some ( TransformExpr com ctx e) ->
@@ -1196,11 +1182,11 @@ module Util =
11961182
11971183 | Fable.ListHead ->
11981184 // get range (com.TransformAsExpr(ctx, fableExpr)) "head"
1199- libCall com ctx range " List" " head " [| com.TransformAsExpr( ctx, fableExpr)|]
1185+ libCall com ctx range " List" " head_ " [| com.TransformAsExpr( ctx, fableExpr)|]
12001186
12011187 | Fable.ListTail ->
12021188 // get range (com.TransformAsExpr(ctx, fableExpr)) "tail"
1203- libCall com ctx range " List" " tail " [| com.TransformAsExpr( ctx, fableExpr)|]
1189+ libCall com ctx range " List" " tail_ " [| com.TransformAsExpr( ctx, fableExpr)|]
12041190
12051191 | Fable.TupleIndex index ->
12061192 match fableExpr with
0 commit comments