@@ -928,36 +928,24 @@ module Util =
928928 // | Fable.NewList (headAndTail, _) when List.contains "FABLE_LIBRARY" com.Options.Define ->
929929 // makeList com ctx r headAndTail
930930 // Optimization for bundle size: compile list literals as List.ofArray
931- | Replacements.ListLiteral( exprs, t) ->
932- [| List.rev exprs |> makeArray com ctx|]
933- |> libCall com ctx r " List" " newList"
934- // match exprs with
935- // | [] -> libCall com ctx r "List" "empty" [||]
936- // | [TransformExpr com ctx expr] -> libCall com ctx r "List" "singleton" [|expr|]
937- // | exprs -> [|makeArray com ctx exprs|] |> libCall com ctx r "List" "ofArray"
938931 | Fable.NewList ( headAndTail, _) ->
939- match headAndTail with
940- | None -> libCall com ctx r " List" " empty" [||]
941- | Some( TransformExpr com ctx head, TransformExpr com ctx tail) ->
932+ let rec getItems acc = function
933+ | None -> List.rev acc, None
934+ | Some( head, Fable.Value( Fable.NewList( tail, _),_)) -> getItems ( head:: acc) tail
935+ | Some( head, tail) -> List.rev ( head:: acc), Some tail
936+ match getItems [] headAndTail with
937+ | [], None ->
938+ libCall com ctx r " List" " empty" [||]
939+ | [ TransformExpr com ctx expr], None ->
940+ libCall com ctx r " List" " singleton" [| expr|]
941+ | exprs, None ->
942+ [| List.rev exprs |> makeArray com ctx|]
943+ |> libCall com ctx r " List" " newList"
944+ | [ TransformExpr com ctx head], Some( TransformExpr com ctx tail) ->
942945 libCall com ctx r " List" " cons" [| head; tail|]
943-
944- // let rec getItems acc = function
945- // | None -> List.rev acc, None
946- // | Some(head, Fable.Value(Fable.NewList(tail, _),_)) -> getItems (head::acc) tail
947- // | Some(head, tail) -> List.rev (head::acc), Some tail
948- // match getItems [] headAndTail with
949- // | [], None ->
950- // libCall com ctx r "List" "empty" [||]
951- // | [TransformExpr com ctx expr], None ->
952- // libCall com ctx r "List" "singleton" [|expr|]
953- // | exprs, None ->
954- // [|makeArray com ctx exprs|]
955- // |> libCall com ctx r "List" "ofArray"
956- // | [TransformExpr com ctx head], Some(TransformExpr com ctx tail) ->
957- // libCall com ctx r "List" "cons" [|head; tail|]
958- // | exprs, Some(TransformExpr com ctx tail) ->
959- // [|makeArray com ctx exprs; tail|]
960- // |> libCall com ctx r "List" "ofArrayWithTail"
946+ | exprs, Some( TransformExpr com ctx tail) ->
947+ [| List.rev exprs |> makeArray com ctx; tail|]
948+ |> libCall com ctx r " List" " newListWithTail"
961949 | Fable.NewOption ( value, t) ->
962950 match value with
963951 | Some ( TransformExpr com ctx e) ->
@@ -1212,11 +1200,11 @@ module Util =
12121200
12131201 | Fable.ListHead ->
12141202 // get range (com.TransformAsExpr(ctx, fableExpr)) "head"
1215- libCall com ctx range " List" " head " [| com.TransformAsExpr( ctx, fableExpr)|]
1203+ libCall com ctx range " List" " head_ " [| com.TransformAsExpr( ctx, fableExpr)|]
12161204
12171205 | Fable.ListTail ->
12181206 // get range (com.TransformAsExpr(ctx, fableExpr)) "tail"
1219- libCall com ctx range " List" " tail " [| com.TransformAsExpr( ctx, fableExpr)|]
1207+ libCall com ctx range " List" " tail_ " [| com.TransformAsExpr( ctx, fableExpr)|]
12201208
12211209 | Fable.TupleIndex index ->
12221210 match fableExpr with
0 commit comments