Details
Description
class A:
private privatefield = 1
protected protectedfield = 2
public final publicfinalfield as int = 3
a = A()
//these should throw an error at compile time:
//print a.privatefield
//print a.protectedfield
//modifying a final field
print a.publicfinalfield
a.publicfinalfield += 1 //no error modifying final field
print a.publicfinalfield
a.publicfinalfield += 1 //no error modifying final field
print a.publicfinalfield
I'll look into creating more test cases later.
It doesn't work on set properties (but works on get properties).
>>> class M:
... private Prop:
... set:
... pass
...
>>> m().Prop = null
----^
ERROR: Unknown identifier: 'm'.
>>> M().Prop = null
System.MethodAccessException: M.set_Prop(System.Object)
at Input3Module.Main(String[] argv)