Skip to content
This repository
tag: v955
Fetching contributors…

Cannot retrieve contributors at this time

file 80 lines (62 sloc) 2.125 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
(*
Copyright © 2011 MLstate

This file is part of OPA.

OPA is free software: you can redistribute it and/or modify it under the
terms of the GNU Affero General Public License, version 3, as published by
the Free Software Foundation.

OPA 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 Affero General Public License for
more details.

You should have received a copy of the GNU Affero General Public License
along with OPA. If not, see <http://www.gnu.org/licenses/>.
*)

(**
Specific bsl processing for Opa files.

@author Mathieu Barbin
*)

(**
This module implements part of the bslregister process.
*)
(** *)
type filename = string
type contents = string


(**
Bsl Preprocessing for Opa files.

Essentially, it is about producing generated declaration.
{[
##include functions bslpervasives
]}
will produce a code like :
{[
`+` = %%bslpervasives.add_int%% : int, int -> int
...
etc...
]}

The final bymap should have been built at the end of all registering
of bypass, or some inclusion may be unsuccessfull.
*)
val preprocess :
  final_bymap:BslLib.BSL.ByPassMap.t -> BslDirectives.opalang_decorated_file -> (filename * FBuffer.t)


type true_means_error = bool

(**
This performs checks on the bsl opa.
All errors log are produced using OManager channel.

It makes no OManager errors, or does not raise any exception,
just logs errors using citation if possible,
and returns at the end a bool indicating
if some errors was encounted during the checking.
[true] means errors.

{[
if checking_fail ~final_bymap opa_codes then
!! the opa in the bsl is buggy !!
else
(* everything is ok *)
]}

The function returns also the typed opa interfaces,
produces after typing.

The filenames should be preserved.
*)
val checking_fail :
  final_bymap:BslLib.BSL.ByPassMap.t -> (filename * contents) list ->
  true_means_error * (filename * FBuffer.t) list
Something went wrong with that request. Please try again.