From 18af0ae26db1b65bf37b4d2748286f2d0b85f518 Mon Sep 17 00:00:00 2001 From: Christoph Knittel Date: Sat, 10 Feb 2024 06:02:29 +0100 Subject: [PATCH] Remove obsolete "bs.open" feature --- jscomp/frontend/ast_attributes.ml | 7 --- jscomp/frontend/ast_attributes.mli | 2 - jscomp/frontend/ast_bs_open.ml | 75 ------------------------------ jscomp/frontend/ast_bs_open.mli | 30 ------------ jscomp/frontend/bs_builtin_ppx.ml | 11 +---- 5 files changed, 2 insertions(+), 123 deletions(-) delete mode 100644 jscomp/frontend/ast_bs_open.ml delete mode 100644 jscomp/frontend/ast_bs_open.mli diff --git a/jscomp/frontend/ast_attributes.ml b/jscomp/frontend/ast_attributes.ml index 0cf882cbb2..6c000dac68 100644 --- a/jscomp/frontend/ast_attributes.ml +++ b/jscomp/frontend/ast_attributes.ml @@ -93,13 +93,6 @@ let process_attributes_rev (attrs : t) : attr_kind * t = Bs_syntaxerr.err loc Conflict_bs_bs_this_bs_meth | _, _ -> (st, attr :: acc)) -let process_pexp_fun_attributes_rev (attrs : t) = - Ext_list.fold_left attrs (false, []) - (fun (st, acc) (({txt; loc = _}, _) as attr) -> - match txt with - | "bs.open" -> (true, acc) - | _ -> (st, attr :: acc)) - let process_bs (attrs : t) = Ext_list.fold_left attrs (false, []) (fun (st, acc) (({txt; loc = _}, _) as attr) -> diff --git a/jscomp/frontend/ast_attributes.mli b/jscomp/frontend/ast_attributes.mli index ec31ccb547..54244cfc50 100644 --- a/jscomp/frontend/ast_attributes.mli +++ b/jscomp/frontend/ast_attributes.mli @@ -37,8 +37,6 @@ type attr_kind = val process_attributes_rev : t -> attr_kind * t -val process_pexp_fun_attributes_rev : t -> bool * t - val process_bs : t -> bool * t val has_inline_payload : t -> attr option diff --git a/jscomp/frontend/ast_bs_open.ml b/jscomp/frontend/ast_bs_open.ml deleted file mode 100644 index b398970b5d..0000000000 --- a/jscomp/frontend/ast_bs_open.ml +++ /dev/null @@ -1,75 +0,0 @@ -(* Copyright (C) 2015-2016 Bloomberg Finance L.P. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -let isCamlExceptionOrOpenVariant : Longident.t = - Ldot (Ldot (Lident "Js", "Exn"), "isCamlExceptionOrOpenVariant") - -let obj_magic : Longident.t = Lident "__unsafe_cast" - -let rec checkCases (cases : Parsetree.case list) = List.iter check_case cases - -and check_case case = check_pat case.pc_lhs - -and check_pat (pat : Parsetree.pattern) = - match pat.ppat_desc with - | Ppat_construct _ -> () - | Ppat_or (l, r) -> - check_pat l; - check_pat r - | _ -> - Location.raise_errorf ~loc:pat.ppat_loc "Unsupported pattern in `bs.open`" - -let convertBsErrorFunction loc (self : Bs_ast_mapper.mapper) attrs - (cases : Parsetree.case list) = - let open Ast_helper in - let txt = "match" in - let txt_expr = Exp.ident ~loc {txt = Lident txt; loc} in - let none = Exp.construct ~loc {txt = Ast_literal.predef_none; loc} None in - let () = checkCases cases in - let cases = self.cases self cases in - Ast_compatible.fun_ ~attrs ~loc - (Pat.var ~loc {txt; loc}) - (Exp.ifthenelse ~loc - (Ast_compatible.app1 ~loc - (Exp.ident ~loc {txt = isCamlExceptionOrOpenVariant; loc}) - txt_expr) - (Exp.match_ ~loc - (Exp.constraint_ ~loc - (Ast_compatible.app1 ~loc - (Exp.ident ~loc {txt = obj_magic; loc}) - txt_expr) - (Ast_literal.type_exn ~loc ())) - (Ext_list.map_append cases - [Exp.case (Pat.any ~loc ()) none] - (fun x -> - let pc_rhs = x.pc_rhs in - let loc = pc_rhs.pexp_loc in - { - x with - pc_rhs = - Exp.construct ~loc - {txt = Ast_literal.predef_some; loc} - (Some pc_rhs); - }))) - (Some none)) diff --git a/jscomp/frontend/ast_bs_open.mli b/jscomp/frontend/ast_bs_open.mli deleted file mode 100644 index ce1cf04c4b..0000000000 --- a/jscomp/frontend/ast_bs_open.mli +++ /dev/null @@ -1,30 +0,0 @@ -(* Copyright (C) 2019- Authors of ReScript - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -val convertBsErrorFunction : - Location.t -> - Bs_ast_mapper.mapper -> - Ast_helper.attrs -> - Parsetree.case list -> - Parsetree.expression diff --git a/jscomp/frontend/bs_builtin_ppx.ml b/jscomp/frontend/bs_builtin_ppx.ml index 7974fb7fad..69644b9d1b 100644 --- a/jscomp/frontend/bs_builtin_ppx.ml +++ b/jscomp/frontend/bs_builtin_ppx.ml @@ -110,16 +110,9 @@ let expr_mapper ~async_context ~in_function_def (self : mapper) | Pexp_constant (Pconst_integer (s, Some 'l')) -> {e with pexp_desc = Pexp_constant (Pconst_integer (s, None))} (* End rewriting *) - | Pexp_function cases -> ( - (* {[ function [@bs.exn] - | Not_found -> 0 - | Invalid_argument -> 1 - ]}*) + | Pexp_function _ -> async_context := false; - match Ast_attributes.process_pexp_fun_attributes_rev e.pexp_attributes with - | false, _ -> default_expr_mapper self e - | true, pexp_attributes -> - Ast_bs_open.convertBsErrorFunction e.pexp_loc self pexp_attributes cases) + default_expr_mapper self e | _ when Ast_uncurried.exprIsUncurriedFun e &&