|
@@ -182,12 +182,13 @@ define(['./junk-drawer'], function ($goodies) {
|
|
|
emit.traitMethodRemoved(method, this);
|
|
|
};
|
|
|
|
|
|
- function traitBuilder (traitName) {
|
|
|
+ function traitBuilder (traitName, category) {
|
|
|
return {
|
|
|
name: traitName,
|
|
|
make: function () {
|
|
|
var that = new SmalltalkTrait();
|
|
|
that.name = traitName;
|
|
|
+ that.category = category;
|
|
|
that.traitUsers = [];
|
|
|
setupMethods(that);
|
|
|
return that;
|
|
@@ -198,7 +199,7 @@ define(['./junk-drawer'], function ($goodies) {
|
|
|
}
|
|
|
|
|
|
st.addTrait = function (className, category) {
|
|
|
- return buildTraitOrClass(category, traitBuilder(className));
|
|
|
+ return buildTraitOrClass(traitBuilder(className, category));
|
|
|
};
|
|
|
}
|
|
|
|
|
@@ -327,7 +328,7 @@ define(['./junk-drawer'], function ($goodies) {
|
|
|
should be added to the system, see smalltalk.addClass().
|
|
|
Superclass linking is *not* handled here, see api.initialize() */
|
|
|
|
|
|
- function classBuilder (className, superclass, fn) {
|
|
|
+ function classBuilder (className, superclass, category, fn) {
|
|
|
var logicalSuperclass = superclass;
|
|
|
if (superclass == null || superclass.a$nil) {
|
|
|
superclass = nilAsClass;
|
|
@@ -343,6 +344,7 @@ define(['./junk-drawer'], function ($goodies) {
|
|
|
that.slots = [];
|
|
|
|
|
|
that.name = className;
|
|
|
+ that.category = category;
|
|
|
that.subclasses = [];
|
|
|
|
|
|
setupMethods(that);
|
|
@@ -414,7 +416,7 @@ define(['./junk-drawer'], function ($goodies) {
|
|
|
if (typeof superclass === 'undefined' || superclass && superclass.a$nil) {
|
|
|
console.warn('Compiling ' + className + ' as a subclass of `nil`. A dependency might be missing.');
|
|
|
}
|
|
|
- return buildTraitOrClass(category, classBuilder(className, superclass, specialConstructors[className]));
|
|
|
+ return buildTraitOrClass(classBuilder(className, superclass, category, specialConstructors[className]));
|
|
|
};
|
|
|
|
|
|
st.removeClass = removeTraitOrClass;
|