You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Original bug ID: 4242 Reporter: xiemaisi Assigned to: ertai Status: closed (set by @xavierleroy on 2009-03-31T11:07:08Z) Resolution: not a bug Priority: normal Severity: major Version: 3.09.3 Fixed in version: 3.10.0 Category: -for Camlp4 use https://github.com/ocaml/camlp4/issues
Bug description
Camlp4 refuses to parse module constraints containing functor applications, i.e. constraints of the form "with module B = F(A)". According to the OCaml manual, such applications should be allowed (see section 6.10, production "mod-constraint").
The following (short but nonsensical) code compiles under pure ocamlc, but gives a "bad modules expr long ident" failure under camlp4 for the constraint in module type C:
======================================================================
module type A = sig end
module F (X:A) : A = struct end
module type B = sig module Y : A end
module type C =
(sig
module M1 : A
module M2 : B with module Y = F(M1)
end)
The text was updated successfully, but these errors were encountered:
Original bug ID: 4242
Reporter: xiemaisi
Assigned to: ertai
Status: closed (set by @xavierleroy on 2009-03-31T11:07:08Z)
Resolution: not a bug
Priority: normal
Severity: major
Version: 3.09.3
Fixed in version: 3.10.0
Category: -for Camlp4 use https://github.com/ocaml/camlp4/issues
Bug description
Camlp4 refuses to parse module constraints containing functor applications, i.e. constraints of the form "with module B = F(A)". According to the OCaml manual, such applications should be allowed (see section 6.10, production "mod-constraint").
The following (short but nonsensical) code compiles under pure ocamlc, but gives a "bad modules expr long ident" failure under camlp4 for the constraint in module type C:
======================================================================
module type A = sig end
module F (X:A) : A = struct end
module type B = sig module Y : A end
module type C =
(sig
module M1 : A
module M2 : B with module Y = F(M1)
end)
The text was updated successfully, but these errors were encountered: