...do not forget on method tags

-- Pavel

2017-05-22 16:44 GMT+02:00 Pavel Krivanek <pavel.krivanek@gmail.com>:
Nice. We will have troubles with slots because that will mix model and real instances (and slot definitions can contain any Smalltalk code)

-- Pavel

2017-05-22 9:25 GMT+02:00 Luc Fabresse <luc.fabresse@gmail.com>:
Hi,

Following Pharo Days, I brainstormed about some possible class definition syntaxes.
What I have in mind:

"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"

"---------------"
"Some IDEAS (but I did not find one that I really like) of scripting/shorter syntaxes that must ALWAYS end up calling the above basic mechanics at the end:"

Class fromDefinition: [ :def |
def name: #sub;
instVars: 'w r g';
superclass: Object ].

Object subclass ��"<-- returns a subclass of Object but the problem is that the new class is muted each time and the class definition is not explicit"
name: #A;
ivs: 'a b c';
traits: { TEquality }.

{ #superclass -> Object.
#name -> #sub.
#instVars -> 'a b c' } asClass.

{ Object asSuperclass.
��#sub asClassName.
'a b c' asInstVars.
'c' asClassVar } asClass.
��
"litteral approach"
#( name A
superclass Object
instVars #(a b c)
instVar d
) asClass


#Luc