Open alexnask opened 8 years ago
I remember a reason for it being as ugly as it is right now. I would've loved to generate the code you propose instead but I'm pretty sure meta-classes are going to implode if you go that route. Test well :)
@fasterthanlime
I kind of assume the worst is going to happen too :P
Will be reporting on this thread, I'm sure it will be interesting.
C:\rock\sdk\lang\Character.ooc:172:25: note: (near initialization for 'lang_Character__Char_class.__super__.__super__.__super__.name')
C:\rock\sdk\lang\Character.ooc:194:29: error: initializer element is not constant
Was expecting an error of this nature, need to reconsider the generated code.
EDIT:
Alternative codegen: Generate the above without the '.name' field, initialize '.name' in the module load.
Here is a sample _class() function the backend generates lifted from the following class:
Obviously, this function is not thread safe.
Proposed generated code:
Also, anywhere test__Foo_class() would appear, we replace it with &test__Foo_class.