2022-01-29 21:11:20 +01:00
|
|
|
|
2022-02-05 02:45:29 +01:00
|
|
|
// tests for nested scopes, labels, breaking labels and setting the result of block expressions
|
|
|
|
|
|
|
|
//expect:inner
|
|
|
|
//expect:outer
|
2022-01-29 21:11:20 +01:00
|
|
|
{ @outer
|
|
|
|
{ @middle
|
|
|
|
{ @inner
|
2022-02-07 05:35:07 +01:00
|
|
|
print ("inner");
|
2022-01-29 21:11:20 +01:00
|
|
|
break @middle;
|
|
|
|
};
|
2022-02-07 05:35:07 +01:00
|
|
|
print ("middle");
|
2022-01-29 21:11:20 +01:00
|
|
|
};
|
2022-02-07 05:35:07 +01:00
|
|
|
print ("outer");
|
2022-01-29 21:11:20 +01:00
|
|
|
};
|
|
|
|
|
2022-02-05 02:45:29 +01:00
|
|
|
//expect:inner
|
|
|
|
//expect:middle
|
|
|
|
//expect:outer
|
2022-01-29 21:11:20 +01:00
|
|
|
{ @outer
|
|
|
|
{ @middle
|
|
|
|
{ @inner
|
2022-02-07 05:35:07 +01:00
|
|
|
print ("inner");
|
2022-01-29 21:11:20 +01:00
|
|
|
break @inner;
|
|
|
|
};
|
2022-02-07 05:35:07 +01:00
|
|
|
print ("middle");
|
2022-01-29 21:11:20 +01:00
|
|
|
};
|
2022-02-07 05:35:07 +01:00
|
|
|
print ("outer");
|
2022-01-29 21:11:20 +01:00
|
|
|
};
|
|
|
|
|
2022-02-05 02:45:29 +01:00
|
|
|
// nothing to expect here
|
2022-01-29 21:11:20 +01:00
|
|
|
{ @outer
|
|
|
|
{ @middle
|
|
|
|
{ @inner
|
|
|
|
{
|
|
|
|
break @outer;
|
|
|
|
};
|
2022-02-07 05:35:07 +01:00
|
|
|
print ("inner");
|
2022-01-29 21:11:20 +01:00
|
|
|
};
|
2022-02-07 05:35:07 +01:00
|
|
|
print ("middle");
|
2022-01-29 21:11:20 +01:00
|
|
|
};
|
2022-02-07 05:35:07 +01:00
|
|
|
print ("outer");
|
2022-01-29 21:22:42 +01:00
|
|
|
};
|
|
|
|
|
2022-02-05 02:45:29 +01:00
|
|
|
//expect:5.0
|
2022-01-29 21:22:42 +01:00
|
|
|
|
2022-02-09 06:58:51 +01:00
|
|
|
var f = proc() { @result
|
2022-01-29 21:22:42 +01:00
|
|
|
var y = 1;
|
|
|
|
var z = 3;
|
|
|
|
var p = 1;
|
2022-01-29 22:47:23 +01:00
|
|
|
:result = y + (z + p);
|
2022-01-29 21:22:42 +01:00
|
|
|
{
|
2022-02-09 06:47:00 +01:00
|
|
|
break @result;
|
2022-01-29 21:22:42 +01:00
|
|
|
};
|
2022-01-29 22:47:23 +01:00
|
|
|
:result = 10;
|
2022-01-29 21:22:42 +01:00
|
|
|
};
|
|
|
|
|
2022-02-07 05:35:07 +01:00
|
|
|
print (f());
|
2022-01-29 21:22:42 +01:00
|
|
|
|
2022-02-05 02:45:29 +01:00
|
|
|
//expect:15.0
|
2022-01-29 21:22:42 +01:00
|
|
|
|
2022-02-09 06:58:51 +01:00
|
|
|
f = proc(m, n)
|
2022-02-09 06:47:00 +01:00
|
|
|
m + n
|
2022-01-29 21:22:42 +01:00
|
|
|
;
|
|
|
|
|
2022-02-07 05:35:07 +01:00
|
|
|
print (f(f(5, 5), 5));
|
2022-01-29 21:22:42 +01:00
|
|
|
|
|
|
|
|
2022-02-05 02:45:29 +01:00
|
|
|
//expect:10.0
|
2022-01-29 21:22:42 +01:00
|
|
|
|
2022-02-09 06:58:51 +01:00
|
|
|
var g = proc()
|
2022-02-09 06:47:00 +01:00
|
|
|
{@a
|
2022-01-29 22:47:23 +01:00
|
|
|
:a = { @b
|
|
|
|
:b = { @c
|
|
|
|
:c = 10;
|
2022-01-29 21:22:42 +01:00
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|
|
|
|
;
|
|
|
|
|
2022-02-07 05:35:07 +01:00
|
|
|
print (g());
|
2022-01-29 21:22:42 +01:00
|
|
|
|
2022-02-05 02:45:29 +01:00
|
|
|
//expect:9.0
|
2022-01-29 21:22:42 +01:00
|
|
|
|
2022-02-09 06:58:51 +01:00
|
|
|
var h = proc()
|
2022-02-09 06:47:00 +01:00
|
|
|
{@a
|
2022-01-29 22:47:23 +01:00
|
|
|
:a = { @b
|
|
|
|
:b = { @c
|
|
|
|
:a = 3;
|
|
|
|
:b = 6;
|
|
|
|
:c = :a + :b;
|
2022-01-29 21:22:42 +01:00
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|
|
|
|
;
|
|
|
|
|
2022-02-07 05:35:07 +01:00
|
|
|
print (h());
|