package ortac-wrapper
Wrapper plugin for Ortac
Install
Dune Dependency
Authors
Maintainers
Sources
0.7.0.tar.gz
md5=1429cb7ec517060772f97504d84ff789
sha512=498e1b40dd29f5feef3df5fa54f924c7b53f24726b1613a5d8dd7ef8ca16b8cf97a76b9fd2951f32143b59a67b8d80fe13b081890fca07787a5a5fda30102a97
doc/src/ortac-wrapper.plugin/report.ml.html
Source file report.ml
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 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
module W = Ortac_core.Warnings type W.kind += | Ghost_value of string | Ghost_type of string | Function_without_definition of string | Predicate_without_definition of string | Missing_projection of string let level = function | Ghost_value _ | Ghost_type _ | Function_without_definition _ | Predicate_without_definition _ -> W.Warning | Missing_projection _ -> W.Error | kind -> W.level kind open Fmt let pp_kind ppf = function | Ghost_value name -> pf ppf "%s is a ghost value. It was not translated." name | Ghost_type name -> pf ppf "%s is a ghost type. It was not translated." name | Function_without_definition name -> pf ppf "The function %s has no definition. It was not translated." name | Predicate_without_definition name -> pf ppf "The predicate %s has no definition. It was not translated." name | Missing_projection name -> pf ppf "The model %s has no projection function. It was not translated." name | kind -> W.pp_kind ppf kind let pp = W.pp_param pp_kind level open Ir let term ppf (t : term) = Result.iter_error (W.pp ppf) t.translation let terms ppf = List.iter (term ppf) let invariants ppf = List.iter (fun (i : invariant) -> Result.iter_error (W.pp ppf) i.translation) let missing_proj ppf = List.iter (pp ppf) let xpost ppf (xp : xpost) = Result.iter_error (List.iter (W.pp ppf)) xp.translation let xposts ppf = List.iter (xpost ppf) let projection _ppf (_p : projection) = () let value ppf (v : value) = match v.ghost with | Gospel.Tast.Ghost -> W.pp ppf (Ghost_value v.name, v.loc) | Nonghost -> terms ppf v.preconditions; terms ppf v.postconditions; xposts ppf v.xpostconditions let mem_projection context gospel_model = let aux = function | Projection p -> p.model_name = gospel_model | _ -> false in List.exists aux context let type_ context ppf (t : type_) = let missing_projections = t.models |> List.filter (fun (gospel_model, _, _) -> not (mem_projection context.structure gospel_model)) |> List.map (fun (gospel_model, _, _) -> (Missing_projection gospel_model, t.loc)) in missing_proj ppf missing_projections; match t.ghost with | Gospel.Tast.Ghost -> pp ppf (Ghost_type t.name, t.loc) | Nonghost -> (* Result.iter_error (W.pp ppf) t.equality; *) (* Result.iter_error (W.pp ppf) t.comparison; *) (* Result.iter_error (W.pp ppf) t.copy; *) invariants ppf t.invariants let constant ppf (c : constant) = match c.ghost with | Gospel.Tast.Ghost -> pp ppf (Ghost_value c.name, c.loc) | Nonghost -> terms ppf c.checks let definition ppf w loc = function | None -> pp ppf (w, loc) | Some def -> term ppf def let function_ ppf (f : function_) = let w = Function_without_definition f.name in definition ppf w f.loc f.definition let predicate ppf (p : function_) = let w = Predicate_without_definition p.name in definition ppf w p.loc p.definition let axiom ppf (a : axiom) = term ppf a.definition let emit_warnings ppf context = Ir.iter_translation context ~f:(function | Type t -> type_ context ppf t | Projection p -> projection ppf p | Value v -> value ppf v | Constant c -> constant ppf c | Function f -> function_ ppf f | Predicate p -> predicate ppf p | Axiom a -> axiom ppf a)
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>