aboutsummaryrefslogtreecommitdiff
path: root/tests/programs/forward_borrow.zc
blob: 7cc44b1527505520f4fb54a54cb2301ecdf9fa41 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
namespace;
include rt;
// forward calls whose results do not outlive the owner, or do not borrow it, are accepted.
fn main() {
	char* t = rt.new(8); t[0] = ' '; t[1] = 'a'; t[2] = 0;
	let n = count(t); rt.free(t); rt.put_n(n);
	let u = rt.new(8); u[0] = 'b'; u[1] = 0;
	let r = skip(u); rt.put_c(r[0]); rt.free(u);
	let v = rt.new(8); v[0] = 0;
	let q = skip(v); rt.free(v); q = 0; rt.put_n(q);
	let w = rt.new(8); w[0] = 0;
	let k = skip(w)[0]; rt.free(w); rt.put_n(k);
	return 0;
}
int count(char* s) { int i = 0; while (s[i]) i++; return i; }
char* skip(char* s) { int i = 0; while (s[i] == ' ') i++; return s + i; }