|
@@ -1,4 +1,4 @@
|
|
-smalltalk.addPackage('Kernel-Objects', {});
|
|
|
|
|
|
+smalltalk.addPackage('Kernel-Objects');
|
|
smalltalk.addClass('Object', smalltalk.nil, [], 'Kernel-Objects');
|
|
smalltalk.addClass('Object', smalltalk.nil, [], 'Kernel-Objects');
|
|
smalltalk.Object.comment="*Object is the root of the Smalltalk class system*. All classes in the system are subclasses of Object.\x0a\x0aObject provides default behavior common to all normal objects, such as: \x0a\x0a- access\x0a- copying\x0a- comparison\x0a- error handling\x0a- message sending\x0a- reflection\x0a\x0aAlso utility messages that all objects should respond to are defined here.\x0a\x0aObject has no instance variable.\x0a\x0a##Access\x0a\x0aInstance variables can be accessed with `#instVarAt:` and `#instVarAt:put:`. `Object >> instanceVariableNames` answers a collection of all instance variable names.\x0aAccessing JavaScript properties of an object is done through `#basicAt:`, `#basicAt:put:` and `basicDelete:`.\x0a\x0a##Copying\x0a\x0aCopying an object is handled by `#copy` and `#deepCopy`. The first one performs a shallow copy of the receiver, while the second one performs a deep copy.\x0aThe hook method `#postCopy` can be overriden in subclasses to copy fields as necessary to complete the full copy. It will be sent by the copy of the receiver.\x0a\x0a##Comparison\x0a\x0aObjects understand equality `#=` and identity `#==` comparison.\x0a\x0a##Error handling\x0a\x0a- `#halt` is the typical message to use for inserting breakpoints during debugging.\x0a- `#error:` throws a generic error exception\x0a- `#doesNotUnderstand:` handles the fact that there was an attempt to send the given message to the receiver but the receiver does not understand this message.\x0a Overriding this message can be useful to implement proxies for example."
|
|
smalltalk.Object.comment="*Object is the root of the Smalltalk class system*. All classes in the system are subclasses of Object.\x0a\x0aObject provides default behavior common to all normal objects, such as: \x0a\x0a- access\x0a- copying\x0a- comparison\x0a- error handling\x0a- message sending\x0a- reflection\x0a\x0aAlso utility messages that all objects should respond to are defined here.\x0a\x0aObject has no instance variable.\x0a\x0a##Access\x0a\x0aInstance variables can be accessed with `#instVarAt:` and `#instVarAt:put:`. `Object >> instanceVariableNames` answers a collection of all instance variable names.\x0aAccessing JavaScript properties of an object is done through `#basicAt:`, `#basicAt:put:` and `basicDelete:`.\x0a\x0a##Copying\x0a\x0aCopying an object is handled by `#copy` and `#deepCopy`. The first one performs a shallow copy of the receiver, while the second one performs a deep copy.\x0aThe hook method `#postCopy` can be overriden in subclasses to copy fields as necessary to complete the full copy. It will be sent by the copy of the receiver.\x0a\x0a##Comparison\x0a\x0aObjects understand equality `#=` and identity `#==` comparison.\x0a\x0a##Error handling\x0a\x0a- `#halt` is the typical message to use for inserting breakpoints during debugging.\x0a- `#error:` throws a generic error exception\x0a- `#doesNotUnderstand:` handles the fact that there was an attempt to send the given message to the receiver but the receiver does not understand this message.\x0a Overriding this message can be useful to implement proxies for example."
|
|
smalltalk.addMethod(
|
|
smalltalk.addMethod(
|
|
@@ -4387,12 +4387,6 @@ $1=_st(aClass)._isMetaclass();
|
|
if(smalltalk.assert($1)){
|
|
if(smalltalk.assert($1)){
|
|
_st(self)._error_(_st(_st(aClass)._asString()).__comma(" is a Metaclass and cannot be removed!"));
|
|
_st(self)._error_(_st(_st(aClass)._asString()).__comma(" is a Metaclass and cannot be removed!"));
|
|
};
|
|
};
|
|
-_st(_st(_st(aClass)._methodDictionary())._values())._do_((function(each){
|
|
|
|
-return smalltalk.withContext(function($ctx2) {
return _st(aClass)._removeCompiledMethod_(each);
|
|
|
|
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
|
|
|
|
-_st(_st(_st(_st(aClass)._class())._methodDictionary())._values())._do_((function(each){
|
|
|
|
-return smalltalk.withContext(function($ctx2) {
return _st(_st(aClass)._class())._removeCompiledMethod_(each);
|
|
|
|
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
|
|
|
|
_st(self)._deleteClass_(aClass);
|
|
_st(self)._deleteClass_(aClass);
|
|
$2=_st((smalltalk.ClassRemoved || ClassRemoved))._new();
|
|
$2=_st((smalltalk.ClassRemoved || ClassRemoved))._new();
|
|
_st($2)._theClass_(aClass);
|
|
_st($2)._theClass_(aClass);
|
|
@@ -4400,8 +4394,8 @@ $3=_st($2)._yourself();
|
|
_st(_st((smalltalk.SystemAnnouncer || SystemAnnouncer))._current())._announce_($3);
|
|
_st(_st((smalltalk.SystemAnnouncer || SystemAnnouncer))._current())._announce_($3);
|
|
return self}, function($ctx1) {$ctx1.fill(self,"removeClass:",{aClass:aClass}, smalltalk.Smalltalk)})},
|
|
return self}, function($ctx1) {$ctx1.fill(self,"removeClass:",{aClass:aClass}, smalltalk.Smalltalk)})},
|
|
args: ["aClass"],
|
|
args: ["aClass"],
|
|
-source: "removeClass: aClass\x0a\x09aClass isMetaclass ifTrue: [self error: aClass asString, ' is a Metaclass and cannot be removed!'].\x0a \x0a\x09aClass methodDictionary values do: [:each |\x0a\x09\x09aClass removeCompiledMethod: each].\x0a \x0a\x09aClass class methodDictionary values do: [:each |\x0a\x09\x09aClass class removeCompiledMethod: each].\x0a \x0a\x09self deleteClass: aClass.\x0a \x0a SystemAnnouncer current\x0a \x09announce: (ClassRemoved new\x0a \x09theClass: aClass;\x0a yourself)",
|
|
|
|
-messageSends: ["ifTrue:", "error:", ",", "asString", "isMetaclass", "do:", "removeCompiledMethod:", "values", "methodDictionary", "class", "deleteClass:", "announce:", "theClass:", "new", "yourself", "current"],
|
|
|
|
|
|
+source: "removeClass: aClass\x0a\x09aClass isMetaclass ifTrue: [self error: aClass asString, ' is a Metaclass and cannot be removed!'].\x0a \x0a\x09self deleteClass: aClass.\x0a \x0a SystemAnnouncer current\x0a \x09announce: (ClassRemoved new\x0a \x09theClass: aClass;\x0a yourself)",
|
|
|
|
+messageSends: ["ifTrue:", "error:", ",", "asString", "isMetaclass", "deleteClass:", "announce:", "theClass:", "new", "yourself", "current"],
|
|
referencedClasses: ["ClassRemoved", "SystemAnnouncer"]
|
|
referencedClasses: ["ClassRemoved", "SystemAnnouncer"]
|
|
}),
|
|
}),
|
|
smalltalk.Smalltalk);
|
|
smalltalk.Smalltalk);
|