Please add feature request here.
Codes related to some implemented feature can be found by searching their number.
I.E. Want to find codes related to lexical scoping
(the 4th one in the scoping
section)?
search "FEATURE #18",
and you see the result.
- type aliases (#31)
- no functions (see README)
- foreign function interfaces
- find variables in outer scopes (#3)
- when new variables defined, a new scope starts (#4)
- find all variables matches the name (#5)
- lexical scoping (#18)
- primitive types with name (#0) (tested)
- function type, consisting of the parameters' types and the return type (#6)
- types with multiple type parameter (#7)
- infer function's return type from the return statements (#12) (tested)
- infer variable's type by the assignment expression (#8) (tested)
- resolve types defined in the context (unknown types) (#30) (tested)
-
nulltype
can be assigned to variables with any type (#11) (tested) - an HM type system (extra)
- pointers
- raw arrays
- traits or interfaces
- generic with boundaries
- generic lambdas
- generic structs
- type inference
- initialize variable with null or given expression (#13)
- check for mutability (#21)
- check for assignment type (#14) (tested)
- validate lhs (#20)
- check if member exist (#29)
- inline
- overloading (#33)
- remove unused local variables but keep the expression (#36)
- general inline
- inline lambda parameters
- inline when directly invoke a lambda expression (#44)
- convert returns into assignment + goto (#45)
- keep returning currect when inline (#46)
- keep label return when inline (#47)
- check for parameter type (#32)
- the return type should be inferred, or
nulltype
(#19) (tested) - return statements' types should be same (#24) (tested)
- return statement exhaustiveness check (extra)
- defaultly no parameter (#22)
- y-combinator-like recur (#37)
- recur can invoke outside lambdas (#38) (tested)
- only
nulltype
andi32
returning are allowed (#35) - check for main function duplication (#40)
- mutual recursion detection (#34) (tested)
- generic structs
- check for condition type (#1)
- optional else branch (#2)
- when condition is constant value, delete redundant branch (#17)
- if as expression (extra)
- tenary operator
- expression splitting (#42)
- temporary variables are not added to the env (#43)
- string pool (#38)
- only 8, 16, 32, 64 are valid length (#26)
- signed and unsigned (#27)
- check value is valid
- only 32, 64 are valid length (#41)
- check value is valid
- check for condition type (#16)
- do while
- jump statements (#25)
- when the declared/assignment type are mismatch (#9)
- display line number/file name (#10)
- display compilation information (#15)
- pretty print strings (#23)
- types
- expressions
- declarations
- statements
Those features will never be available.
- types with single type parameter