- Improve Visitor Pattern
- Migrate to LLVM 16 with custom Value and Type classes
- Fix multiple imports not working (import each file once)
- Add default values in function declarations
- Add operator overloading
- Add global variables (like 'export let pi = 3.14')
- Add generics
- Add lists
- Add optional parameters in function declarations
- Add tuples
- Add ranges (range(1, 4) style)
- Add foreach loops
- Add traits
- Add string interpolation
- Add multiple value return without having to make structs
- Dataclasses (implicit constructors)
- Add dictionaries
- Add lambda functions
- Add comments above classes and functions as documentation in LSP
- Check dictionaries for multiline support
- Type unions
- Type narrowing
- Automatic Reference Counting (no cycles detection yet)
- Add optional types
- Enums v2 (in type unions, enums with methods, traits and associated values)
- Multithreading with LLVM coroutines (async await)
- Try catch and Errors
- Formatter
- rename + prepareRename
- workspace/symbol
- documentHighlight
- codeAction for obvious fixes
- documentLink for import targets
- richer semantic tokens
- folding/selection ranges
- formatting
Semantic diagnostics are emitted in the typechecker; warnings are suppressed for stdlib sources. The CLI can hide diagnostics with --no-warnings.
- Unreachable code — statement after
return/break/continuein the same block - Unused variable
- Unused parameter
- Unused import
- Shadowing — local declaration hides an outer binding
- Import shadowing — same as above when the outer binding is an import
- Empty
if/elsebranch body - Empty
whilebody - Empty
for-inbody - Trivial condition —
if/whileon constanttrue/false - Lossy implicit conversion — e.g.
int↔float/float32 - Unused class field on non-exported class
- Unused class method on non-exported class
-
unimplemented/ stub statement — warning then error