aboutsummaryrefslogtreecommitdiff
path: root/TODO
blob: 9368f6f56a8f76ad6daa7c5960628ba215074a50 (plain) (blame)
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
47
48
49
50
51
+ Some kind of "unreachable" might be nice to help the move checker? for
instance,

	if abc {
		release(var);
		fwdpanic("!!!");
	}

	use(var)

might be nicer to write than

	if abc {
		release(var);
		fwdpanic("!!!");
	} else {
		use(var);
	}

or the current alternative

	guard(abc) => {
		release(var);
		fwdpanic("!!!");
	} => ;

	use (var);


+ Hmm, some kind of way to say 'this thing owns this reference' would be good.
At the moment, I'm thinking something that parameter lists can be extended with
ownership rules, so for example

	at_vec(vec v, u64 i, (vec > &i64) ok)

would return a 'new' vector and a reference into the vector. If the 'vec' is
moved, the &i64 is marked invalidated, but the &i64 is allowed to be passed
around as long as 'vec' is not moved.

For more references, something like

	hmm((owner > thing1 | thing2))

is three parameters, thing1 and thing2 are both
invalidated if owner is moved (getting two indexes from a vector to swap them?
not sure). Not sure how complex this system should be, could there for example
be a situation where

	hmm((owner > thing1 > thing2))

might make sense? For now, the parser only accepts the first form, (vec > &i64).