@@ -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