4dadf6b4d6
For a clock (ck on x) to be well-formed in an environment H, we must have H x = ck, i.e., the clock of x is the same as the clock ck of the stream being sampled. This constraint is guaranteed by construction for fully inferred clocks (by the rules for when and merge), but nothing guarantees that user declarations be well-formed. This can lead to problems. For instance, this invalid program is incorrectly accepted: node f (x : bool; a : bool :: . on b; b : bool :: . on a) returns (y:bool); let y = true; tel as is this one: node f(a: bool :: . on a; b: bool :: . on a) returns (z: bool); var w : bool; let w = a when b; z = false fby w; tel This invalid program is incorrectly accepted and leads to an internal compiler error: node f (x : bool) returns (y:bool); var a : bool :: . on b; b : bool :: . on a; let y = true; a = true; b = true; tel This patch enforces the well-formedness constraint. It gives a sensible error message when the constraint cannot be satisfied. |
||
---|---|---|
.. | ||
analysis | ||
ctrln | ||
main | ||
sigali | ||
transformations | ||
_tags | ||
minils.ml | ||
mls_compare.ml | ||
mls_mapfold.ml | ||
mls_printer.ml | ||
mls_utils.ml |