Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

melange: delete dead code across the ext library #552

Merged
merged 2 commits into from
Apr 24, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion jscomp/astlib/ast_attributes.ml
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ let rs_externals (attrs : t) pval_prim =
| _, _ ->
Ext_list.exists attrs (fun { attr_name = { txt }; _ } ->
Ext_string.starts_with txt "bs."
|| Ext_array.exists external_attrs (fun (x : string) -> txt = x))
|| Array.exists (fun (x : string) -> txt = x) external_attrs)
|| prims_to_be_encoded pval_prim

let is_inline : attr -> bool =
Expand Down
2 changes: 1 addition & 1 deletion jscomp/core/js_dump_lit.ml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ let rparen = ")"
let exports = "exports"
let dot = "."
let comma = ","
let colon = Ext_string.single_colon
let colon = ":"
let colon_space = ": "
let throw = "throw"
let default = "default"
Expand Down
File renamed without changes.
66 changes: 0 additions & 66 deletions jscomp/ext/bsb_db.mli

This file was deleted.

2 changes: 1 addition & 1 deletion jscomp/ext/dune
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
(wrapped false)
(flags
(:standard -w -9 -open Melange_compiler_libs))
(modules_without_implementation bsb_db ext_js_file_kind)
(modules_without_implementation ext_js_file_kind)
(libraries unix melange-compiler-libs)
(foreign_stubs
(language c)
Expand Down
87 changes: 0 additions & 87 deletions jscomp/ext/ext_array.ml
Original file line number Diff line number Diff line change
Expand Up @@ -31,18 +31,6 @@ let reverse_range a i len =
Array.unsafe_set a (i + len - 1 - k) t
done

let reverse_in_place a = reverse_range a 0 (Array.length a)

let reverse a =
let b_len = Array.length a in
if b_len = 0 then [||]
else
let b = Array.copy a in
for i = 0 to b_len - 1 do
Array.unsafe_set b i (Array.unsafe_get a (b_len - 1 - i))
done;
b

let reverse_of_list = function
| [] -> [||]
| hd :: tl as l ->
Expand All @@ -56,35 +44,6 @@ let reverse_of_list = function
in
fill 0 tl

let filter a f =
let arr_len = Array.length a in
let rec aux acc i =
if i = arr_len then reverse_of_list acc
else
let v = Array.unsafe_get a i in
if f v then aux (v :: acc) (i + 1) else aux acc (i + 1)
in
aux [] 0

let filter_map a (f : _ -> _ option) =
let arr_len = Array.length a in
let rec aux acc i =
if i = arr_len then reverse_of_list acc
else
let v = Array.unsafe_get a i in
match f v with Some v -> aux (v :: acc) (i + 1) | None -> aux acc (i + 1)
in
aux [] 0

let range from to_ =
if from > to_ then invalid_arg "Ext_array.range"
else Array.init (to_ - from + 1) (fun i -> i + from)

let map2i f a b =
let len = Array.length a in
if len <> Array.length b then invalid_arg "Ext_array.map2i"
else Array.mapi (fun i a -> f i a (Array.unsafe_get b i)) a

let rec tolist_f_aux a f i res =
if i < 0 then res
else
Expand All @@ -93,15 +52,6 @@ let rec tolist_f_aux a f i res =

let to_list_f a f = tolist_f_aux a f (Array.length a - 1) []

let rec tolist_aux a f i res =
if i < 0 then res
else
let v = Array.unsafe_get a i in
tolist_aux a f (i - 1) (match f v with Some v -> v :: res | None -> res)

let to_list_map a f = tolist_aux a f (Array.length a - 1) []
let to_list_map_acc a acc f = tolist_aux a f (Array.length a - 1) acc

let of_list_map a f =
match a with
| [] -> [||]
Expand Down Expand Up @@ -171,40 +121,8 @@ let rfind_with_index arr cmp v =
in
aux (len - 1)

type 'a split = No_split | Split of 'a array * 'a array

let find_with_index arr cmp v =
let len = Array.length arr in
let rec aux i len =
if i >= len then -1
else if cmp (Array.unsafe_get arr i) v then i
else aux (i + 1) len
in
aux 0 len

let find_and_split arr cmp v : _ split =
let i = find_with_index arr cmp v in
if i < 0 then No_split
else
Split (Array.sub arr 0 i, Array.sub arr (i + 1) (Array.length arr - i - 1))

(** TODO: available since 4.03, use {!Array.exists} *)

let exists a p =
let n = Array.length a in
let rec loop i =
if i = n then false
else if p (Array.unsafe_get a i) then true
else loop (succ i)
in
loop 0

let rec unsafe_loop index len p xs ys =
if index >= len then true
else
p (Array.unsafe_get xs index) (Array.unsafe_get ys index)
&& unsafe_loop (succ index) len p xs ys

let for_alli a p =
let n = Array.length a in
let rec loop i =
Expand All @@ -214,11 +132,6 @@ let for_alli a p =
in
loop 0

let for_all2_no_exn xs ys p =
let len_xs = Array.length xs in
let len_ys = Array.length ys in
len_xs = len_ys && unsafe_loop 0 len_xs p xs ys

let map a f =
let open Array in
let l = length a in
Expand Down
14 changes: 0 additions & 14 deletions jscomp/ext/ext_array.mli
Original file line number Diff line number Diff line change
Expand Up @@ -25,24 +25,10 @@
val reverse_range : 'a array -> int -> int -> unit
(** Some utilities for {!Array} operations *)

val reverse_in_place : 'a array -> unit
val reverse : 'a array -> 'a array
val reverse_of_list : 'a list -> 'a array
val filter : 'a array -> ('a -> bool) -> 'a array
val filter_map : 'a array -> ('a -> 'b option) -> 'b array
val range : int -> int -> int array
val map2i : (int -> 'a -> 'b -> 'c) -> 'a array -> 'b array -> 'c array
val to_list_f : 'a array -> ('a -> 'b) -> 'b list
val to_list_map : 'a array -> ('a -> 'b option) -> 'b list
val to_list_map_acc : 'a array -> 'b list -> ('a -> 'b option) -> 'b list
val of_list_map : 'a list -> ('a -> 'b) -> 'b array
val rfind_with_index : 'a array -> ('a -> 'b -> bool) -> 'b -> int

type 'a split = No_split | Split of 'a array * 'a array

val find_and_split : 'a array -> ('a -> 'b -> bool) -> 'b -> 'a split
val exists : 'a array -> ('a -> bool) -> bool
val for_all2_no_exn : 'a array -> 'b array -> ('a -> 'b -> bool) -> bool
val for_alli : 'a array -> (int -> 'a -> bool) -> bool
val map : 'a array -> ('a -> 'b) -> 'b array
val iter : 'a array -> ('a -> unit) -> unit
Expand Down
63 changes: 0 additions & 63 deletions jscomp/ext/ext_filename.ml
Original file line number Diff line number Diff line change
Expand Up @@ -26,24 +26,6 @@ let is_dir_sep_unix c = c = '/'
let is_dir_sep_win_cygwin c = c = '/' || c = '\\' || c = ':'
let is_dir_sep = if Sys.unix then is_dir_sep_unix else is_dir_sep_win_cygwin

(* reference ninja.cc IsKnownShellSafeCharacter *)
let shell_safe_character = function
| '0' .. '9' | 'a' .. 'z' | 'A' .. 'Z' | '_' | '+' | '-' | '.' | '/' | '@' ->
true
| _ -> false

let maybe_quote (s : string) =
let noneed_quote = Ext_string.for_all s shell_safe_character in
if noneed_quote then s else Filename.quote s

let chop_extension_maybe name =
let rec search_dot i =
if i < 0 || is_dir_sep (String.unsafe_get name i) then name
else if String.unsafe_get name i = '.' then String.sub name 0 i
else search_dot (i - 1)
in
search_dot (String.length name - 1)

let get_extension_maybe name =
let name_len = String.length name in
let rec search_dot name i name_len =
Expand Down Expand Up @@ -103,48 +85,3 @@ let module_name name =
let name = Filename.basename name in
let name_len = String.length name in
search_dot (name_len - 1) name

type module_info = { module_name : string; case : bool }

let rec valid_module_name_aux name off len =
if off >= len then true
else
let c = String.unsafe_get name off in
match c with
| 'A' .. 'Z' | 'a' .. 'z' | '0' .. '9' | '_' | '\'' | '.' | '[' | ']' ->
valid_module_name_aux name (off + 1) len
| _ -> false

type state = Invalid | Upper | Lower

let valid_module_name name len =
if len = 0 then Invalid
else
let c = String.unsafe_get name 0 in
match c with
| 'A' .. 'Z' -> if valid_module_name_aux name 1 len then Upper else Invalid
| 'a' .. 'z' | '0' .. '9' | '_' | '[' | ']' ->
if valid_module_name_aux name 1 len then Lower else Invalid
| _ -> Invalid

let as_module ~basename =
let rec search_dot i name name_len =
if i < 0 then
(* Input e.g, [a_b] *)
match valid_module_name name name_len with
| Invalid -> None
| Upper -> Some { module_name = name; case = true }
| Lower ->
Some { module_name = Ext_string.capitalize_ascii name; case = false }
else if String.unsafe_get name i = '.' then
(*Input e.g, [A_b] *)
match valid_module_name name i with
| Invalid -> None
| Upper ->
Some { module_name = Ext_string.capitalize_sub name i; case = true }
| Lower ->
Some { module_name = Ext_string.capitalize_sub name i; case = false }
else search_dot (i - 1) name name_len
in
let name_len = String.length basename in
search_dot (name_len - 1) basename name_len
13 changes: 0 additions & 13 deletions jscomp/ext/ext_filename.mli
Original file line number Diff line number Diff line change
Expand Up @@ -27,15 +27,6 @@
library but rather specific to JS Module name convention.
*)

(** An extension module to calculate relative path follow node/npm style.
TODO : this short name will have to change upon renaming the file.
*)

val is_dir_sep : char -> bool
val shell_safe_character : char -> bool
val maybe_quote : string -> string
val chop_extension_maybe : string -> string

(* return an empty string if no extension found *)
val get_extension_maybe : string -> string
val get_all_extensions_maybe : string -> string option
Expand All @@ -44,7 +35,3 @@ val chop_all_extensions_maybe : string -> string

(* OCaml specific abstraction*)
val module_name : string -> string

type module_info = { module_name : string; case : bool }

val as_module : basename:string -> module_info option
29 changes: 0 additions & 29 deletions jscomp/ext/ext_ident.ml
Original file line number Diff line number Diff line change
Expand Up @@ -72,34 +72,6 @@ let create = Ident.create_local

(* FIXME: no need for `$' operator *)
let create_tmp ?(name = Literals.tmp) () = create name
let js_module_table : Ident.t Hash_string.t = Hash_string.create 31

(* This is for a js exeternal module, we can change it when printing
for example
{[
var React$1 = require('react');
React$1.render(..)
]}

Given a name, if duplicated, they should have the same id
*)
(* let create_js_module (name : string) : Ident.t =
let name =
String.concat "" @@ Ext_list.map
(Ext_string.split name '-') Ext_string.capitalize_ascii in
(* TODO: if we do such transformation, we should avoid collision for example:
react-dom
react--dom
check collision later
*)
match Hash_string.find_exn js_module_table name with
| exception Not_found ->
let ans = Ident.create name in
(* let ans = { v with flags = js_module_flag} in *)
Hash_string.add js_module_table name ans;
ans
| v -> (* v *) Ident.rename v
*)

let[@inline] convert ?(op = false) (c : char) : string =
match c with
Expand Down Expand Up @@ -174,7 +146,6 @@ let convert (name : string) =
- other solution: use lazy values
*)
let make_unused () = create "_"
let reset () = Hash_string.clear js_module_table

(* Has to be total order, [x < y]
and [x > y] should be consistent
Expand Down
1 change: 0 additions & 1 deletion jscomp/ext/ext_ident.mli
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ val create_js : string -> Ident.t

val create : string -> Ident.t
val make_js_object : Ident.t -> Ident.t
val reset : unit -> unit
val create_tmp : ?name:string -> unit -> Ident.t
val make_unused : unit -> Ident.t
val stamp : Ident.t -> int
Expand Down
Loading