-
Notifications
You must be signed in to change notification settings - Fork 10
/
todo
89 lines (69 loc) · 3.14 KB
/
todo
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
Crack ToDo File & Project Plan
==============================
Copyright 2009 Google Inc.
- I think we can safely remove the "master" parameter in getNestedTypeDefs,
getTypeDefs.
- crack.fs.Path.isLink() is incorrect. It needs to use lstat() instead of
stat. We should just create a Path2 or fs2 module that fixes this and
other things.
- Use crack.nml.crack for crack code examples in the manual.
- When I distribute crack-lang.org (see "dist" in the repo) for some reason
everything's getting written umask 770.
For crack.cmd
-------------
- consider a "@command class ..." syntax, allowing for a larger number of
arguments/flags than can comfortably be specified in an argument list.
auto-imports
------------
- Need a trace option to show all of the things that get imported.
- Need a command-line option to cause the module to not be run so we can
just generate this trace without running the module.
Older Stuff
-----------
- audit locations where token definitions are replicated, make sure that
all tokens are represented in all locations. Things I've found are:
- compiler.Token doesn't have "is" methods for the following:
do, enum, assignXXX (it does have "isAugAssign"), bitXXX (it has
isBinOp), filename, for, is, lineNumber, PopErrCtx.
I can't add these because Token is non-final and has a visible
constructor.
- A bunch of these were missing in the TOK_* definitions, I've fixed
these.
- Expansions (non-heap storage types)
- Remove generic line information from the meta-digest
- Need to make Undef classes in extensions "final" so we don't try to
inherit from them.
- Fixes to comm2:
- Instead of having a CommHandlerFactory that creates the CommHandler,
we should have a UserHandlerFactory that creates the UserHandler and
accepts a CommHandler (this would allow the user handler to make any
necessary changes to the CommHandler without having to create one)
Unassigned
----------
- allow explicit operators to be called without the "var." prefix.
- implement inheritence from low-level types.
Roadmap
-------
recategorize:
- cleanup:
- combine FuncDef and OverloadDef into a base class with a virtual
matches() for arg list defs, or just make FuncDef a smaller thing and
always use OverloadDef
- allowing turning off code generation by replacing the builder with a
"NullBuilder" NullResultExpr follows:
class NullResultExpr : public ResultExpr {
public:
// won't work, need a non-null ResultExpr value
NullResultExpr() : ResultExpr(0) {}
ResultExprPtr emit(Context &context) {
return this;
}
};
- first class functions (including overload selection: func[Type1, Type2])
- keyword arguments
- sequence construction
- type inference
- minor features
- string interpolation expressions: s := `some string $val`;
- warn the user when an overload hides an earlier overload (foo(String)
following foo(Object), for example).