caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* Using camlp4 syntax extensions in the top-level
@ 2009-02-25 15:24 David Allsopp
  2009-02-25 15:59 ` [Caml-list] " Martin Jambon
  0 siblings, 1 reply; 2+ messages in thread
From: David Allsopp @ 2009-02-25 15:24 UTC (permalink / raw)
  To: OCaml List

I'm trying to use json-static in the toplevel (OCaml 3.11.0 / MinGW /
findlib 1.2.4) but I'm getting an error message:

# #camlp4o;;
C:\Dev\OCaml\lib\dynlink.cma: loaded
C:\Dev\OCaml\lib\camlp4: added to search path
C:\Dev\OCaml\lib\camlp4\camlp4o.cma: loaded
        Camlp4 Parsing version 3.11.0

# #require "json-static";;
c:\Dev\OCaml\lib\site-lib\pcre: added to search path
c:\Dev\OCaml\lib\site-lib\pcre\pcre.cma: loaded
c:\Dev\OCaml\lib\site-lib\netsys: added to search path
c:\Dev\OCaml\lib\site-lib\netsys\netsys.cma: loaded
c:\Dev\OCaml\lib\site-lib\netstring: added to search path
c:\Dev\OCaml\lib\site-lib\netstring\netstring.cma: loaded
c:\Dev\OCaml\lib\site-lib\netstring\netstring_top.cmo: loaded
c:\Dev\OCaml\lib\site-lib\netstring\netaccel.cma: loaded
c:\Dev\OCaml\lib\site-lib\netstring\netaccel_link.cmo: loaded
c:\Dev\OCaml\lib\site-lib\json-wheel: added to search path
c:\Dev\OCaml\lib\site-lib\json-wheel\jsonwheel.cma: loaded
c:\Dev\OCaml\lib\site-lib\json-static: added to search path
c:\Dev\OCaml\lib\site-lib\json-static\pa_json_static.cmo: loaded
# type json point = < x: number; y: number >
  and coords = point array;;
Assertion failed, file "camlp4/Camlp4/Struct/Camlp4Ast2OCamlAst.ml", line
795, char 11

I can build the example using ocamlc with no problems - I just don't seem to
be able to do it interactively in the toplevel. Should I be able to?

TIA,


David


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [Caml-list] Using camlp4 syntax extensions in the top-level
  2009-02-25 15:24 Using camlp4 syntax extensions in the top-level David Allsopp
@ 2009-02-25 15:59 ` Martin Jambon
  0 siblings, 0 replies; 2+ messages in thread
From: Martin Jambon @ 2009-02-25 15:59 UTC (permalink / raw)
  To: David Allsopp; +Cc: OCaml List

David Allsopp wrote:
> I'm trying to use json-static in the toplevel (OCaml 3.11.0 / MinGW /
> findlib 1.2.4) but I'm getting an error message:
> 
> # #camlp4o;;
> C:\Dev\OCaml\lib\dynlink.cma: loaded
> C:\Dev\OCaml\lib\camlp4: added to search path
> C:\Dev\OCaml\lib\camlp4\camlp4o.cma: loaded
>         Camlp4 Parsing version 3.11.0
> 
> # #require "json-static";;
> c:\Dev\OCaml\lib\site-lib\pcre: added to search path
> c:\Dev\OCaml\lib\site-lib\pcre\pcre.cma: loaded
> c:\Dev\OCaml\lib\site-lib\netsys: added to search path
> c:\Dev\OCaml\lib\site-lib\netsys\netsys.cma: loaded
> c:\Dev\OCaml\lib\site-lib\netstring: added to search path
> c:\Dev\OCaml\lib\site-lib\netstring\netstring.cma: loaded
> c:\Dev\OCaml\lib\site-lib\netstring\netstring_top.cmo: loaded
> c:\Dev\OCaml\lib\site-lib\netstring\netaccel.cma: loaded
> c:\Dev\OCaml\lib\site-lib\netstring\netaccel_link.cmo: loaded
> c:\Dev\OCaml\lib\site-lib\json-wheel: added to search path
> c:\Dev\OCaml\lib\site-lib\json-wheel\jsonwheel.cma: loaded
> c:\Dev\OCaml\lib\site-lib\json-static: added to search path
> c:\Dev\OCaml\lib\site-lib\json-static\pa_json_static.cmo: loaded
> # type json point = < x: number; y: number >
>   and coords = point array;;
> Assertion failed, file "camlp4/Camlp4/Struct/Camlp4Ast2OCamlAst.ml", line
> 795, char 11
> 
> I can build the example using ocamlc with no problems - I just don't seem to
> be able to do it interactively in the toplevel. Should I be able to?

In theory yes. It was working fine with the old camlp4 and ocaml 3.09.3.

The piece of code from which the failed assertion comes from is the following
(camlp4/Camlp4/Struct/Camlp4Ast2OCamlAst.ml version 3.11.0, line 795, char 11):


  and mktype_decl x acc =
    match x with
    [ <:ctyp< $x$ and $y$ >> ->
         mktype_decl x (mktype_decl y acc)
    | Ast.TyDcl _ c tl td cl ->
        let cl =
          List.map
            (fun (t1, t2) ->
              let loc = Loc.merge (loc_of_ctyp t1) (loc_of_ctyp t2) in
              (ctyp t1, ctyp t2, mkloc loc))
            cl
        in
        [(c, type_decl (List.fold_right type_parameters tl []) cl td) :: acc]
    | _ -> assert False ]



I had no idea of this problem. Even a very simple example fails:


# type json t = int;;
Assertion failed, file "camlp4/Camlp4/Struct/Camlp4Ast2OCamlAst.ml", line 795,
char 11


The pretty-printed code produced by camlp4o is the following:


$ cat toto.ml
type json t = int

$ camlp4o -printer o -I /home/martin/godi3110/lib/ocaml/pkg-lib/json-static
-parser pa_json_static.cmo toto.ml

type t = int

let __json_static_error obj msg =
  let m = 400 in
  let s = Json_io.string_of_json obj in
  let obj_string =
    if (String.length s) > m then (String.sub s 0 (m - 4)) ^ " ..." else s
  in Json_type.json_error (msg ^ (":
" ^ obj_string))

let rec (t_of_json : Json_type.t -> t) = fun x -> Json_type.Browse.int x

let rec (json_of_t : t -> Json_type.t) = fun x -> Json_type.Build.int x




There may be a workaround. It needs more investigation. Thanks for reporting
the problem.



Martin

-- 
http://mjambon.com/


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2009-02-25 16:02 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-02-25 15:24 Using camlp4 syntax extensions in the top-level David Allsopp
2009-02-25 15:59 ` [Caml-list] " Martin Jambon

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).