nondescript/tests/break.nds

97 lines
1.1 KiB
Plaintext
Raw Normal View History

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-02-05 02:45:29 +01:00
//expect:5.0
2022-02-09 06:58:51 +01:00
var f = proc() { @result
var y = 1;
var z = 3;
var p = 1;
2022-01-29 22:47:23 +01:00
:result = y + (z + p);
{
2022-02-09 06:47:00 +01:00
break @result;
};
2022-01-29 22:47:23 +01:00
:result = 10;
};
2022-02-07 05:35:07 +01:00
print (f());
2022-02-05 02:45:29 +01:00
//expect:15.0
2022-02-09 06:58:51 +01:00
f = proc(m, n)
2022-02-09 06:47:00 +01:00
m + n
;
2022-02-07 05:35:07 +01:00
print (f(f(5, 5), 5));
2022-02-05 02:45:29 +01:00
//expect:10.0
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-02-07 05:35:07 +01:00
print (g());
2022-02-05 02:45:29 +01:00
//expect:9.0
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-02-07 05:35:07 +01:00
print (h());