@@ -438,7 +438,7 @@ module Annotation =
438438            makeNativeTypeAnnotation com ctx [ genArg]  " Array" 
439439
440440    let  makeListTypeAnnotation  com ctx genArg  = 
441-         makeImportTypeAnnotation com ctx [ genArg]  " Types " " List" 
441+         makeImportTypeAnnotation com ctx [ genArg]  " List " " List" 
442442
443443    let  makeUnionTypeAnnotation  com ctx genArgs  = 
444444        List.map ( typeAnnotation com ctx)  genArgs
@@ -659,12 +659,6 @@ module Util =
659659        |  []  ->  expr
660660        |  m:: ms ->  get None expr m |>  getParts ms
661661
662-     let  makeList  com ctx r headAndTail  = 
663-         match  headAndTail with 
664-         |  None ->  [||] 
665-         |  Some( TransformExpr com ctx head,  TransformExpr com ctx tail)  ->  [| head;  tail|] 
666-         |>  libConsCall com ctx r " Types" " List" 
667- 
668662    let  makeArray   ( com :  IBabelCompiler )  ctx exprs  = 
669663        List.mapToArray ( fun  e  ->  com.TransformAsExpr( ctx,  e))  exprs
670664        |>  ArrayExpression :>  Expression
@@ -914,12 +908,17 @@ module Util =
914908        |  Fable.NewTuple vals ->  makeArray com ctx vals
915909        // Optimization for bundle size: compile list literals as List.ofArray 
916910        |  Replacements.ListLiteral( exprs,  t)  -> 
917-             match  exprs with 
918-             |  []  ->  makeList com ctx r None
919-             |  [ expr]  ->  Some( expr,  Fable.Value( Fable.NewList ( None, t),  None))  |>  makeList com ctx r
920-             |  exprs ->  [| makeArray com ctx exprs|]  |>  libCall com ctx r " List" " ofArray" 
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" 
921917        |  Fable.NewList ( headAndTail,  _)  -> 
922-             makeList com ctx r headAndTail
918+             match  headAndTail with 
919+             |  None ->  libCall com ctx r " List" " empty" [||] 
920+             |  Some( TransformExpr com ctx head,  TransformExpr com ctx tail)  -> 
921+                 libCall com ctx r " List" " cons" [| head;  tail|] 
923922        |  Fable.NewOption ( value,  t)  -> 
924923            match  value with 
925924            |  Some ( TransformExpr com ctx e)  -> 
@@ -1174,10 +1173,12 @@ module Util =
11741173            |  Fable.FieldKey field ->  get range expr field.Name
11751174
11761175        |  Fable.ListHead -> 
1177-             get range ( com.TransformAsExpr( ctx,  fableExpr))  " head" 
1176+             // get range (com.TransformAsExpr(ctx, fableExpr)) "head" 
1177+             libCall com ctx range " List" " head" [| com.TransformAsExpr( ctx,  fableExpr)|] 
11781178
11791179        |  Fable.ListTail -> 
1180-             get range ( com.TransformAsExpr( ctx,  fableExpr))  " tail" 
1180+             // get range (com.TransformAsExpr(ctx, fableExpr)) "tail" 
1181+             libCall com ctx range " List" " tail" [| com.TransformAsExpr( ctx,  fableExpr)|] 
11811182
11821183        |  Fable.TupleIndex index -> 
11831184            match  fableExpr with 
@@ -1245,9 +1246,9 @@ module Util =
12451246            let  op  =  if  nonEmpty then  BinaryUnequal else  BinaryEqual
12461247            upcast  BinaryExpression( op,  com.TransformAsExpr( ctx,  expr),  NullLiteral(),  ?loc= range) 
12471248        |  Fable.ListTest nonEmpty -> 
1248-             let  expr  =  com.TransformAsExpr( ctx,  expr) 
1249-             let  op  =  if  nonEmpty  then  BinaryUnequal  else  BinaryEqual 
1250-             upcast  BinaryExpression ( op ,  get None  expr  " tail " ,  NullLiteral (),   ?loc= range) 
1249+             //  let expr = get range ( com.TransformAsExpr(ctx, expr)) "IsEmpty" 
1250+             let  expr  =  libCall com ctx range  " List "   " isEmpty "   [| com.TransformAsExpr ( ctx ,  expr )|] 
1251+             if  nonEmpty  then   upcast  UnaryExpression ( UnaryNot ,   expr,   ?loc= range)   else  expr 
12511252        |  Fable.UnionCaseTest tag -> 
12521253            let  expected  =  ofInt tag
12531254            let  actual  =  com.TransformAsExpr( ctx,  expr)  |>  getUnionExprTag None
0 commit comments