kyleect / locks

A toy language branched from Lox to learn language implementation and tooling. Forked from loxcraft
https://kyleect.github.io/locks/#/docs
MIT License
0 stars 0 forks source link

Class fields #84

Closed kyleect closed 6 months ago

kyleect commented 7 months ago

Implement class fields. Restrict assigning new fields to an instance. Fields must be defined on the class to access or write to.

Example

class Parent {
  let a = 123;
  let b = 456;
}

class Child extends Parent {
  let b = 789;
}

let parent = Parent();
print parent.a; // out: 123
print parent.b // out: 456

let child = Child();
print child.a; // out: 123
print child.b; // out: 789

print parent.c; // out: NameError: name "c" isn't defined on class "Parent"
parent.c = 1000; // out: NameError: name "c" isn't defined on class "Parent"

Requirements