Exactly as I wrote previously, I added pinned constructors feature into Skila. Let me show you the syntax:
struct ClassModifier def pinned init(coords NodeCoords) do ...
The novelty is “pinned
” keyword after “def
” (“init
” is Skila constructor).
Once you add pinned constructor you have to redefine it (or allow compiler to do it for you) in every descendant class. Compare this to regular methods — when you add one you know it will stay in every derived class. It is not true with constructors though, you can have elaborate constructor and it is only good for the class you define it for. So you can think of pinned constructors as an aid for bringing symmetry between methods and constructors.
If you don’t define any constructors compiler will redefine pinned constructors for you with simple field initialization and calling base constructor. Please note that unless parameterless constructor (the default one) is pinned in base class, it won’t be redefined by compiler along with pinned ones.