Rune - enhance LVALUE, add heap and persist, and more.
[rune.git] / TODO
1
2 * When realizing persistent store we have to clean out any previously
3   existing pointers.
4
5 * Persistent store mmap() file path is currently hacked up.  Needs command
6   line arg to set the home directory for the program, and the default
7   should be "$HOME/.<program>/rune_%s.map".  libgen/heap.c
8
9 * infinintely recursive aliases are not currently detected.
10
11   alias a = b;
12   alias b = a + 1;
13
14 * get rid of need for 'auto' prefix in casts to distinguish between
15   variable names and types.
16
17 * share pens and also share font information
18
19 * Handle simple exposure aggregation and use clip to limit update area
20   (see tests/gfxslider.d)
21
22 isg for resolveType's assigned expression
23
24 DONE<<constructors/destructors for global elements and statement blocks>> ?
25
26 reference type resolver and libi/exp.c TOK_STRIND and TOK_CALL.  METHOD CALLS
27 via ref types (don't screw around with the exp, dup it instead?)
28
29 refine: check validity of procedural refinements (different return types,
30 argument types, etc...)
31
32 is d_Search now obsolete?
33
34 Add support for 'super'.  Either 'structural->super' or 'super.<blah>'
35 (for method calls), to access a superclass element that has been overloaded
36 in the subclass.
37
38 We need to be able to copy a statement tree (procedure body) on the fly
39 in the resolver, when a subclass is passed to a procedure expecting its
40 superclass.  We have to keep track of compound types (proc args) in order
41 to cache the various versions of the procedure.  We already have d_Super
42 to locate the procedure in a TOK_CALL if the procedure body is NULL.
43 The modified procedure must be able to pass a different sg_Level.. i.e.
44 the one for the superclass, even though all of its types will be the actual
45 class (the subclass), in order to locate the proper declaration (a declaration
46 may be invisible to the subclass but visible to the superclass).
47
48 --
49
50
51 int ary[exp] ... the exp is shared across qualifications of the type,
52 which is bad.  Also, what about compound types sharing the same semgroup?
53 that should be ok.
54
55 double check 'isglobal' TF/SGF_NOINIT cache
56
57 cast procedures generally work but we really need to formalize
58 how ex_Type is set verses what the exp node really wants (e.g. for
59 procedures... look at ex_Type or look at the procdecl's return type?).
60
61 really fix cast... in libi/exp.c 
62
63 Check global scope when indirecting through a type or class rather 
64 then storage.  only allow global scope for storage in that case.
65
66 non-global procedure called through object -- automatic "this" reference.
67 procedures embedded in class accessing class elements?????  global vs
68 non-global
69
70 Implement STF_FORWARD checking (do not allow forward reference stack 
71 declarations to other decls at the same semantic level.)
72
73 Make procedural refinement work
74
75 Implement scope
76
77 Implement heap variables (implement as initialized pointers / use '@' ?)
78
79 Partial procedure args resolution
80
81 procedure pointers (point to the declaration)
82