Update plans
This commit is contained in:
parent
6276d97c6b
commit
99418bdf6a
2 changed files with 20 additions and 2 deletions
|
|
@ -1,2 +0,0 @@
|
|||
* Mutually recursive functions
|
||||
* Figure out indentation: keep tabs - what to do with printing errors? Enforce e.g. 4 spaces?
|
||||
20
plans.txt
Normal file
20
plans.txt
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
Future plans:
|
||||
* Rewrite identifier resolution using visitors
|
||||
* Default-constructing (no arguments, zero-initialization) primitive types & struct types
|
||||
* Introduce type checking & inference as a separate pre-execution/compilation AST pass + add type information into expression nodes
|
||||
* Pointers: pointer types, address-of operator (&), dereferencing, scope-based lifetime tracking in interpreter
|
||||
* Function overloading: separate functions from values (again) in interpreter, allow casting to specific function type to take function value
|
||||
* Const propagation: annotate expression AST nodes that are computable in compile-time
|
||||
* Generic parameters: can be either values or `t : type`, but always compile-time
|
||||
* Generic structs: `struct <t : type, n : u64> array:`, require explicitly specifying parameters when instantiated (used as a type or creating a value)
|
||||
* Generic functions: `func <t : type, n : u64> max(a : t[n]):`, require explicitly specifying parameters when called or converted to function pointer
|
||||
* Generic parameter inference for functions & structs
|
||||
* Extension functions: operator overloading, destructors, iterators & for loop, move assignment (replaces built-in copy)
|
||||
* Metaprogramming: assigning types to variables (of type `type`), functions can take `type` as regular arguments and return `type`, all type computations are compile-time only
|
||||
|
||||
Backlog:
|
||||
* Mutually recursive functions
|
||||
* Figure out indentation: keep tabs - what to do with printing errors? Enforce e.g. 4 spaces?
|
||||
* Default-constructing primitive types
|
||||
* Empty array expression
|
||||
* Calling functions as methods
|
||||
Loading…
Add table
Reference in a new issue