ocaml-community / utop

Universal toplevel for OCaml
Other
844 stars 112 forks source link

Support camlp5 by using Toploop.parse_toplevel_phrase instead of Parse.toplevel_phrase #486

Open aqjune opened 5 months ago

aqjune commented 5 months ago

This resolves issue #485 (and the equivalent issue discussed in this thread) by fixing the definition of parse_toplevel_phrase_default of UTop to use !Toploop.parse_toplevel_phrase instead of Parse.toplevel_phrase.

Note that !Toploop.parse_toplevel_phrase is equal to Parse.toplevel_phrase when utop was just initiated: https://github.com/ocaml/ocaml/blob/trunk/toplevel/topcommon.ml#L29

However, a user may add its preprocessor to Toploop.parse_toplevel_phrase later using camlp5, making !Toploop.parse_toplevel_phrase and Parse.toplevel_phrase unequal.

This patch simply replaces Parse.toplevel_phrase with !Toploop.parse_toplevel_phrase so that the preprocessor can do its work.