dev-ml/js_of_ocaml: fix build with ocaml 4.05
authorAlexis Ballier <aballier@gentoo.org>
Thu, 13 Jul 2017 22:39:19 +0000 (00:39 +0200)
committerAlexis Ballier <aballier@gentoo.org>
Thu, 13 Jul 2017 23:24:40 +0000 (01:24 +0200)
Package-Manager: Portage-2.3.6, Repoman-2.3.2

dev-ml/js_of_ocaml/files/ocaml405.patch [new file with mode: 0644]
dev-ml/js_of_ocaml/js_of_ocaml-2.8.4-r1.ebuild

diff --git a/dev-ml/js_of_ocaml/files/ocaml405.patch b/dev-ml/js_of_ocaml/files/ocaml405.patch
new file mode 100644 (file)
index 0000000..552dff4
--- /dev/null
@@ -0,0 +1,41 @@
+Index: js_of_ocaml-2.8.4/lib/ppx/ppx_js.ml
+===================================================================
+--- js_of_ocaml-2.8.4.orig/lib/ppx/ppx_js.ml
++++ js_of_ocaml-2.8.4/lib/ppx/ppx_js.ml
+@@ -162,7 +162,8 @@ let invoker ?(extra_types = []) uplift d
+      {[ fun (type res t0 t1 ..) arg1 arg2 -> e ]}
+   *)
+   let local_types =
+-    res :: List.map Arg.name (extra_types @ arguments)
++    List.map Location.mknoloc
++    (res :: List.map Arg.name (extra_types @ arguments))
+   in
+   let result = List.fold_right Exp.newtype local_types invoker in
+@@ -210,7 +211,7 @@ let method_call ~loc obj meth args =
+          (Exp.fun_ ~loc ~attrs:[merlin_noloc] Label.nolabel None
+             (Pat.var ~loc ~attrs:[merlin_noloc] (Location.mknoloc "x"))
+             (Exp.send ~loc ~attrs:[merlin_noloc]
+-               (Exp.ident ~loc:gloc (lid ~loc:gloc "x")) meth))]
++               (Exp.ident ~loc:gloc (lid ~loc:gloc "x")) (Location.mknoloc meth)))]
+   )
+ (* {[ obj##.prop ]} generates
+@@ -244,7 +245,7 @@ let prop_get ~loc:_ ~prop_loc obj prop =
+         (Exp.fun_ ~loc:gloc Label.nolabel None
+            (Pat.var ~loc:gloc ~attrs:[merlin_noloc] (Location.mknoloc "x"))
+            (Exp.send ~loc:prop_loc ~attrs:[merlin_noloc]
+-              (Exp.ident ~loc:gloc (lid ~loc:gloc "x")) prop))
++              (Exp.ident ~loc:gloc (lid ~loc:gloc "x")) (Location.mknoloc prop)))
+     ]
+   )
+@@ -289,7 +290,7 @@ let prop_set ~loc ~prop_loc obj prop val
+         (Exp.fun_ ~loc Label.nolabel None
+            (Pat.var ~loc:gloc ~attrs:[merlin_noloc] (Location.mknoloc "x"))
+            (Exp.send ~loc:prop_loc ~attrs:[merlin_noloc]
+-              (Exp.ident ~loc:gloc (lid ~loc:gloc "x")) prop))
++              (Exp.ident ~loc:gloc (lid ~loc:gloc "x")) (Location.mknoloc prop)))
+     ]
+   )
index 9331122157d463906670644f497d214ddb9c3050..cac8f1d0da5c55f3239c77ff56d9cb955c4b349b 100644 (file)
@@ -41,6 +41,7 @@ DEPEND="${RDEPEND}"
 
 src_prepare() {
        epatch "${FILESDIR}/ppx.patch"
+       has_version '>=dev-lang/ocaml-4.05_rc' && epatch "${FILESDIR}/ocaml405.patch"
 }
 
 src_configure() {