Mentions légales du service

Skip to content
  • Timothy Bourke's avatar
    Enforce well-formedness of clocks · 4dadf6b4
    Timothy Bourke authored and Gwenaël Delaval's avatar Gwenaël Delaval committed
    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.
    4dadf6b4