Skip to content

Latest commit

 

History

History
33 lines (32 loc) · 1.48 KB

TODO.md

File metadata and controls

33 lines (32 loc) · 1.48 KB

Notes to myself about possible next steps:

  • add some basic tests for share/lease
  • incorporate liveness
  • convert from fns to methods
  • giving places should rename
  • tests for giving a shared value (I think it'll do the wrong thing now!)
  • tests for giving a leased value
  • moving from a class field x where other fields reference self.x -- this needs to either be an error or invalidate the struct
  • rework subtyping etc
  • subtyping rules for our leased etc are broken
  • cancellation
  • prevent mutation of shared content
  • introduce a "maybe copy" rule to limit splitting of paths -- addressed by using liveness
  • subtyping -- leased T should be invariant in T
  • variance, atomic fields
  • giving of shared things currently moves, not copies -- I think this is fixed, test?
  • check mutation of fields and inherited permissions etc
  • convert Int to a value type
  • giving and accessing of value types should not move etc
  • complete type check rules for all the expressions
  • fuzzing
  • prevent mutation when perm parameter MAY be shared
  • add structs/enums/value types
  • popping variables from environment may need to clear from types
  • pop variables from environment as we exit a block
  • introduce environment consistency check and assert it at various points
  • type inference
  • foo.give.share -- does this even parse?
  • boxed classes
  • boxed type
  • ref type
  • ref expression etc