Skip to content

Latest commit

 

History

History
59 lines (54 loc) · 2.14 KB

File metadata and controls

59 lines (54 loc) · 2.14 KB

Roadmap

  • 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

LSP

  • rename + prepareRename
  • workspace/symbol
  • documentHighlight
  • codeAction for obvious fixes
  • documentLink for import targets
  • richer semantic tokens
  • folding/selection ranges
  • formatting

Compiler warnings

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 / continue in 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 / else branch body
  • Empty while body
  • Empty for-in body
  • Trivial condition — if / while on constant true / false
  • Lossy implicit conversion — e.g. intfloat / float32
  • Unused class field on non-exported class
  • Unused class method on non-exported class
  • unimplemented / stub statement — warning then error