File: 22-delete.ha

package info (click to toggle)
harec 0.24.2-5
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 1,412 kB
  • sloc: ansic: 20,221; asm: 247; makefile: 118; lisp: 80; sh: 45
file content (46 lines) | stat: -rw-r--r-- 778 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
use rt;

type my_slice = []int;

fn index() void = {
	let x: []int = alloc([1, 2, 3, 4, 5]);
	let y = &x: *my_slice;

	delete(x[1]);
	assert(len(x) == 4);
	assert(x[0] == 1 && x[1] == 3 && x[2] == 4 && x[3] == 5);

	static delete(y[3]);
	assert(len(x) == 3);
	delete(y[0]);
	assert(len(x) == 2);
	assert(x[0] == 3 && x[1] == 4);
	free(x);
};

fn slice() void = {
	let x: my_slice = alloc([1, 2, 3, 4, 5]);
	let y = &x;
	const s = y: *rt::slice;

	delete(x[..3]);
	assert(len(x) == 2);
	assert(x[0] == 4 && x[1] == 5);

	delete(x[len(x)..]);

	static delete(y[..]);
	assert(len(x) == 0);
	assert(s.capacity < 5);

	append(x, [6, 7, 8, 9]...);
	delete(x[1..3]);
	assert(len(x) == 2);
	assert(x[0] == 6 && x[1] == 9);
	free(x);
};

export fn main() void = {
	index();
	slice();
};