@@ -926,36 +926,24 @@ module Util =
926
926
// | Fable.NewList (headAndTail, _) when List.contains "FABLE_LIBRARY" com.Options.Define ->
927
927
// makeList com ctx r headAndTail
928
928
// Optimization for bundle size: compile list literals as List.ofArray
929
- | Replacements.ListLiteral( exprs, t) ->
930
- [| List.rev exprs |> makeArray com ctx|]
931
- |> libCall com ctx r " List" " newList"
932
- // match exprs with
933
- // | [] -> libCall com ctx r "List" "empty" [||]
934
- // | [TransformExpr com ctx expr] -> libCall com ctx r "List" "singleton" [|expr|]
935
- // | exprs -> [|makeArray com ctx exprs|] |> libCall com ctx r "List" "ofArray"
936
929
| Fable.NewList ( headAndTail, _) ->
937
- match headAndTail with
938
- | None -> libCall com ctx r " List" " empty" [||]
939
- | Some( TransformExpr com ctx head, TransformExpr com ctx tail) ->
930
+ let rec getItems acc = function
931
+ | None -> List.rev acc, None
932
+ | Some( head, Fable.Value( Fable.NewList( tail, _),_)) -> getItems ( head:: acc) tail
933
+ | Some( head, tail) -> List.rev ( head:: acc), Some tail
934
+ match getItems [] headAndTail with
935
+ | [], None ->
936
+ libCall com ctx r " List" " empty" [||]
937
+ | [ TransformExpr com ctx expr], None ->
938
+ libCall com ctx r " List" " singleton" [| expr|]
939
+ | exprs, None ->
940
+ [| List.rev exprs |> makeArray com ctx|]
941
+ |> libCall com ctx r " List" " newList"
942
+ | [ TransformExpr com ctx head], Some( TransformExpr com ctx tail) ->
940
943
libCall com ctx r " List" " cons" [| head; tail|]
941
-
942
- // let rec getItems acc = function
943
- // | None -> List.rev acc, None
944
- // | Some(head, Fable.Value(Fable.NewList(tail, _),_)) -> getItems (head::acc) tail
945
- // | Some(head, tail) -> List.rev (head::acc), Some tail
946
- // match getItems [] headAndTail with
947
- // | [], None ->
948
- // libCall com ctx r "List" "empty" [||]
949
- // | [TransformExpr com ctx expr], None ->
950
- // libCall com ctx r "List" "singleton" [|expr|]
951
- // | exprs, None ->
952
- // [|makeArray com ctx exprs|]
953
- // |> libCall com ctx r "List" "ofArray"
954
- // | [TransformExpr com ctx head], Some(TransformExpr com ctx tail) ->
955
- // libCall com ctx r "List" "cons" [|head; tail|]
956
- // | exprs, Some(TransformExpr com ctx tail) ->
957
- // [|makeArray com ctx exprs; tail|]
958
- // |> libCall com ctx r "List" "ofArrayWithTail"
944
+ | exprs, Some( TransformExpr com ctx tail) ->
945
+ [| List.rev exprs |> makeArray com ctx; tail|]
946
+ |> libCall com ctx r " List" " newListWithTail"
959
947
| Fable.NewOption ( value, t) ->
960
948
match value with
961
949
| Some ( TransformExpr com ctx e) ->
@@ -1210,11 +1198,11 @@ module Util =
1210
1198
1211
1199
| Fable.ListHead ->
1212
1200
// get range (com.TransformAsExpr(ctx, fableExpr)) "head"
1213
- libCall com ctx range " List" " head " [| com.TransformAsExpr( ctx, fableExpr)|]
1201
+ libCall com ctx range " List" " head_ " [| com.TransformAsExpr( ctx, fableExpr)|]
1214
1202
1215
1203
| Fable.ListTail ->
1216
1204
// get range (com.TransformAsExpr(ctx, fableExpr)) "tail"
1217
- libCall com ctx range " List" " tail " [| com.TransformAsExpr( ctx, fableExpr)|]
1205
+ libCall com ctx range " List" " tail_ " [| com.TransformAsExpr( ctx, fableExpr)|]
1218
1206
1219
1207
| Fable.TupleIndex index ->
1220
1208
match fableExpr with
0 commit comments