@@ -426,7 +426,7 @@ module Annotation =
426426            makeNativeTypeAnnotation com ctx [ genArg]  " Array" 
427427
428428    let  makeListTypeAnnotation  com ctx genArg  = 
429-         makeImportTypeAnnotation com ctx [ genArg]  " Types "   " List" 
429+         makeImportTypeAnnotation com ctx [ genArg]  " List "   " List" 
430430
431431    let  makeUnionTypeAnnotation  com ctx genArgs  = 
432432        List.map ( typeAnnotation com ctx)  genArgs
@@ -645,12 +645,6 @@ module Util =
645645        |  []  ->  expr
646646        |  m:: ms ->  get None expr m |>  getParts ms
647647
648-     let  makeList  com ctx r headAndTail  = 
649-         match  headAndTail with 
650-         |  None ->  [||] 
651-         |  Some( TransformExpr com ctx head,  TransformExpr com ctx tail)  ->  [| head;  tail|] 
652-         |>  libConsCall com ctx r " Types"   " List" 
653- 
654648    let  makeArray   ( com :  IBabelCompiler )  ctx exprs  = 
655649        List.mapToArray ( fun  e  ->  com.TransformAsExpr( ctx,  e))  exprs
656650        |>  ArrayExpression :>  Expression
@@ -900,12 +894,17 @@ module Util =
900894        |  Fable.NewTuple vals ->  makeArray com ctx vals
901895        // Optimization for bundle size: compile list literals as List.ofArray 
902896        |  Replacements.ListLiteral( exprs,  t)  -> 
903-             match  exprs with 
904-             |  []  ->  makeList com ctx r None
905-             |  [ expr]  ->  Some( expr,  Fable.Value( Fable.NewList ( None, t),  None))  |>  makeList com ctx r
906-             |  exprs ->  [| makeArray com ctx exprs|]  |>  libCall com ctx r " List"   " ofArray" 
897+             [| List.rev exprs |>  makeArray com ctx|] 
898+             |>  libCall com ctx r " List"   " newList" 
899+             // match exprs with 
900+             // | [] -> libCall com ctx r "List" "empty" [||] 
901+             // | [TransformExpr com ctx expr] -> libCall com ctx r "List" "singleton" [|expr|] 
902+             // | exprs -> [|makeArray com ctx exprs|] |> libCall com ctx r "List" "ofArray" 
907903        |  Fable.NewList ( headAndTail,  _)  -> 
908-             makeList com ctx r headAndTail
904+             match  headAndTail with 
905+             |  None ->  libCall com ctx r " List"   " empty"   [||] 
906+             |  Some( TransformExpr com ctx head,  TransformExpr com ctx tail)  -> 
907+                 libCall com ctx r " List"   " cons"   [| head;  tail|] 
909908        |  Fable.NewOption ( value,  t)  -> 
910909            match  value with 
911910            |  Some ( TransformExpr com ctx e)  -> 
@@ -1158,10 +1157,12 @@ module Util =
11581157            |  Fable.FieldKey field ->  get range expr field.Name
11591158
11601159        |  Fable.ListHead -> 
1161-             get range ( com.TransformAsExpr( ctx,  fableExpr))  " head" 
1160+             // get range (com.TransformAsExpr(ctx, fableExpr)) "head" 
1161+             libCall com ctx range " List"   " head"   [| com.TransformAsExpr( ctx,  fableExpr)|] 
11621162
11631163        |  Fable.ListTail -> 
1164-             get range ( com.TransformAsExpr( ctx,  fableExpr))  " tail" 
1164+             // get range (com.TransformAsExpr(ctx, fableExpr)) "tail" 
1165+             libCall com ctx range " List"   " tail"   [| com.TransformAsExpr( ctx,  fableExpr)|] 
11651166
11661167        |  Fable.TupleIndex index -> 
11671168            match  fableExpr with 
@@ -1229,9 +1230,9 @@ module Util =
12291230            let  op  =  if  nonEmpty then  BinaryUnequal else  BinaryEqual
12301231            upcast  BinaryExpression( op,  com.TransformAsExpr( ctx,  expr),  NullLiteral(),  ?loc= range) 
12311232        |  Fable.ListTest nonEmpty -> 
1232-             let  expr  =  com.TransformAsExpr( ctx,  expr) 
1233-             let  op  =  if  nonEmpty  then  BinaryUnequal  else  BinaryEqual 
1234-             upcast  BinaryExpression ( op ,  get None  expr  " tail " ,  NullLiteral (),   ?loc= range) 
1233+             //  let expr = get range ( com.TransformAsExpr(ctx, expr)) "IsEmpty" 
1234+             let  expr  =  libCall com ctx range  " List "   " isEmpty "   [| com.TransformAsExpr ( ctx ,  expr )|] 
1235+             if  nonEmpty  then   upcast  UnaryExpression ( UnaryNot ,   expr,   ?loc= range)   else  expr 
12351236        |  Fable.UnionCaseTest tag -> 
12361237            let  expected  =  ofInt tag
12371238            let  actual  =  com.TransformAsExpr( ctx,  expr)  |>  getUnionExprTag None
0 commit comments