2016-06-11 10:34:34 +00:00
|
|
|
// Illustrates a (now fixed) bug where mutation altering a
|
|
|
|
// subscription caused the `retracted` half of a during instance to be
|
|
|
|
// lost.
|
|
|
|
//
|
|
|
|
// Symptomatic output:
|
|
|
|
// x= 123 v= 999
|
|
|
|
// x= 124 v= 999
|
|
|
|
//
|
|
|
|
// Correct output:
|
|
|
|
// x= 123 v= 999
|
|
|
|
// finally for x= 124 v= 999
|
|
|
|
// x= 124 v= 999
|
|
|
|
//
|
|
|
|
// Should eventually be turned into some kind of test case.
|
|
|
|
|
|
|
|
var Syndicate = require('./src/main.js');
|
|
|
|
var Dataspace = Syndicate.Dataspace;
|
|
|
|
|
|
|
|
assertion type foo(x, y);
|
|
|
|
|
|
|
|
ground dataspace {
|
2017-02-16 19:38:56 +00:00
|
|
|
spawn {
|
2016-08-07 19:33:09 +00:00
|
|
|
field this.x = 123;
|
2016-06-11 10:34:34 +00:00
|
|
|
|
2016-08-25 12:12:32 +00:00
|
|
|
assert foo(this.x, 999);
|
|
|
|
|
|
|
|
during foo(this.x, $v) {
|
|
|
|
on start {
|
|
|
|
console.log('x=', this.x, 'v=', v);
|
|
|
|
if (this.x === 123) {
|
|
|
|
this.x = 124;
|
2016-06-11 10:34:34 +00:00
|
|
|
}
|
|
|
|
}
|
2016-08-25 12:12:32 +00:00
|
|
|
on stop {
|
|
|
|
console.log('finally for x=', this.x, 'v=', v);
|
|
|
|
}
|
2016-06-11 10:34:34 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|