The build / partial object syntaxes are interesting in the way they could be integrated with RB in creating RB actions (RDAddClassChange / RBAddClassVariableChange / RBAddInstanceVariableChange) that could then be played on "build". Gives you a nice undo/redo capability and Epicea integration to boot. Also, it could be valuable to not completely build / install the class in some cases, and manipulate the abstract structure without compiling it. Regards, Thierry 2017-05-22 13:53 GMT+02:00 Denis Kudriashov <dionisiydk@gmail.com>:
Hi. My idea was to ask concrete metaobject for new object definition:
Class <<< #MyClass superclass: #Object; uses: #MyTrait; vars: { #a. #b }; classVars: { #A. #B }; package: #MyPackage; tags: #(Core); layout: #MethodDictionaryLayout.
for class side:
Metaclass <<< #MyClass vars: { }.
Or:
Class classSide <<< #MyClass
for trait:
Trait <<< #MyTrait uses: #AnotherTrait; package: #MyPackage; tags: #(Core Traits)
for trait class side:
ClassTrait <<< #MyTrait uses: #AnotherClassSideTrait
2017-05-22 9:25 GMT+02:00 Luc Fabresse <luc.fabresse@gmail.com>:
"basic mechanics, only THIS one in the image!" ClassDefinition new superclass: Object; "optional. If not specified, Object by default ;-)" name: #A; "optional and create an anonymous class if not specified" instVars: 'a b c'; traits: {TEquality}; package: 'Plop'; createClass. " this message sent might be hidden by the browser when accepting"
I would not call it #createClass but something like #install. Because #createClass can be also interesting message to get new class without affecting live system. And #install should be default version of #installInto: anEnvironment.