@@ -933,36 +933,24 @@ module Util =
933
933
// | Fable.NewList (headAndTail, _) when List.contains "FABLE_LIBRARY" com.Options.Define ->
934
934
// makeList com ctx r headAndTail
935
935
// Optimization for bundle size: compile list literals as List.ofArray
936
- | Replacements.ListLiteral( exprs, t) ->
937
- [| List.rev exprs |> makeArray com ctx|]
938
- |> libCall com ctx r " List" " newList"
939
- // match exprs with
940
- // | [] -> libCall com ctx r "List" "empty" [||]
941
- // | [TransformExpr com ctx expr] -> libCall com ctx r "List" "singleton" [|expr|]
942
- // | exprs -> [|makeArray com ctx exprs|] |> libCall com ctx r "List" "ofArray"
943
936
| Fable.NewList ( headAndTail, _) ->
944
- match headAndTail with
945
- | None -> libCall com ctx r " List" " empty" [||]
946
- | Some( TransformExpr com ctx head, TransformExpr com ctx tail) ->
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
+ [| List.rev exprs |> makeArray com ctx|]
948
+ |> libCall com ctx r " List" " newList"
949
+ | [ TransformExpr com ctx head], Some( TransformExpr com ctx tail) ->
947
950
libCall com ctx r " List" " cons" [| head; tail|]
948
-
949
- // let rec getItems acc = function
950
- // | None -> List.rev acc, None
951
- // | Some(head, Fable.Value(Fable.NewList(tail, _),_)) -> getItems (head::acc) tail
952
- // | Some(head, tail) -> List.rev (head::acc), Some tail
953
- // match getItems [] headAndTail with
954
- // | [], None ->
955
- // libCall com ctx r "List" "empty" [||]
956
- // | [TransformExpr com ctx expr], None ->
957
- // libCall com ctx r "List" "singleton" [|expr|]
958
- // | exprs, None ->
959
- // [|makeArray com ctx exprs|]
960
- // |> libCall com ctx r "List" "ofArray"
961
- // | [TransformExpr com ctx head], Some(TransformExpr com ctx tail) ->
962
- // libCall com ctx r "List" "cons" [|head; tail|]
963
- // | exprs, Some(TransformExpr com ctx tail) ->
964
- // [|makeArray com ctx exprs; tail|]
965
- // |> libCall com ctx r "List" "ofArrayWithTail"
951
+ | exprs, Some( TransformExpr com ctx tail) ->
952
+ [| List.rev exprs |> makeArray com ctx; tail|]
953
+ |> libCall com ctx r " List" " newListWithTail"
966
954
| Fable.NewOption ( value, t) ->
967
955
match value with
968
956
| Some ( TransformExpr com ctx e) ->
@@ -1217,11 +1205,11 @@ module Util =
1217
1205
1218
1206
| Fable.ListHead ->
1219
1207
// get range (com.TransformAsExpr(ctx, fableExpr)) "head"
1220
- libCall com ctx range " List" " head " [| com.TransformAsExpr( ctx, fableExpr)|]
1208
+ libCall com ctx range " List" " head_ " [| com.TransformAsExpr( ctx, fableExpr)|]
1221
1209
1222
1210
| Fable.ListTail ->
1223
1211
// get range (com.TransformAsExpr(ctx, fableExpr)) "tail"
1224
- libCall com ctx range " List" " tail " [| com.TransformAsExpr( ctx, fableExpr)|]
1212
+ libCall com ctx range " List" " tail_ " [| com.TransformAsExpr( ctx, fableExpr)|]
1225
1213
1226
1214
| Fable.TupleIndex index ->
1227
1215
match fableExpr with
0 commit comments