|
@@ -1264,6 +1264,26 @@ referencedClasses: []
|
|
}),
|
|
}),
|
|
smalltalk.ClassBuilder);
|
|
smalltalk.ClassBuilder);
|
|
|
|
|
|
|
|
+smalltalk.addMethod(
|
|
|
|
+"_basicSwapClassNames_with_",
|
|
|
|
+smalltalk.method({
|
|
|
|
+selector: "basicSwapClassNames:with:",
|
|
|
|
+category: 'private',
|
|
|
|
+fn: function (aClass,anotherClass){
|
|
|
|
+var self=this;
|
|
|
|
+return smalltalk.withContext(function($ctx1) {
|
|
|
|
+ var tmp = aClass.className;
|
|
|
|
+ aClass.className = anotherClass.className;
|
|
|
|
+ anotherClass.className = tmp;
|
|
|
|
+ ;
|
|
|
|
+return self}, function($ctx1) {$ctx1.fill(self,"basicSwapClassNames:with:",{aClass:aClass,anotherClass:anotherClass}, smalltalk.ClassBuilder)})},
|
|
|
|
+args: ["aClass", "anotherClass"],
|
|
|
|
+source: "basicSwapClassNames: aClass with: anotherClass\x0a\x09<\x0a\x09\x09var tmp = aClass.className;\x0a\x09\x09aClass.className = anotherClass.className;\x0a anotherClass.className = tmp;\x0a\x09>",
|
|
|
|
+messageSends: [],
|
|
|
|
+referencedClasses: []
|
|
|
|
+}),
|
|
|
|
+smalltalk.ClassBuilder);
|
|
|
|
+
|
|
smalltalk.addMethod(
|
|
smalltalk.addMethod(
|
|
"_class_instanceVariableNames_",
|
|
"_class_instanceVariableNames_",
|
|
smalltalk.method({
|
|
smalltalk.method({
|
|
@@ -1396,34 +1416,56 @@ selector: "migrateClassNamed:superclass:instanceVariableNames:package:",
|
|
category: 'private',
|
|
category: 'private',
|
|
fn: function (aString,aClass,aCollection,packageName){
|
|
fn: function (aString,aClass,aCollection,packageName){
|
|
var self=this;
|
|
var self=this;
|
|
-var oldClass,newClass;
|
|
|
|
-return smalltalk.withContext(function($ctx1) {
var $1,$2,$3;
|
|
|
|
|
|
+var oldClass,newClass,tmp;
|
|
|
|
+return smalltalk.withContext(function($ctx1) {
var $1,$2,$3,$4,$5;
|
|
|
|
+tmp=_st("new*").__comma(aString);
|
|
oldClass=_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._at_(aString);
|
|
oldClass=_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._at_(aString);
|
|
-_st(self)._basicRenameClass_to_(oldClass,_st("Old").__comma(aString));
|
|
|
|
-newClass=_st(self)._addSubclassOf_named_instanceVariableNames_package_(aClass,aString,aCollection,packageName);
|
|
|
|
-_st(_st(oldClass)._subclasses())._do_((function(each){
|
|
|
|
-return smalltalk.withContext(function($ctx2) {
return _st(self)._migrateClass_superclass_(each,newClass);
|
|
|
|
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
|
|
|
|
|
|
+newClass=_st(self)._addSubclassOf_named_instanceVariableNames_package_(aClass,tmp,aCollection,packageName);
|
|
|
|
+_st(self)._basicSwapClassNames_with_(oldClass,newClass);
|
|
_st((function(){
|
|
_st((function(){
|
|
return smalltalk.withContext(function($ctx2) {
return _st(self)._copyClass_to_(oldClass,newClass);
|
|
return smalltalk.withContext(function($ctx2) {
return _st(self)._copyClass_to_(oldClass,newClass);
|
|
}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._on_do_((smalltalk.Error || Error),(function(exception){
|
|
}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._on_do_((smalltalk.Error || Error),(function(exception){
|
|
return smalltalk.withContext(function($ctx2) {
$1=self;
|
|
return smalltalk.withContext(function($ctx2) {
$1=self;
|
|
-_st($1)._basicRemoveClass_(newClass);
|
|
|
|
-$2=_st($1)._basicRenameClass_to_(oldClass,aString);
|
|
|
|
|
|
+_st($1)._basicSwapClassNames_with_(oldClass,newClass);
|
|
|
|
+$2=_st($1)._basicRemoveClass_(newClass);
|
|
$2;
|
|
$2;
|
|
return _st(exception)._signal();
|
|
return _st(exception)._signal();
|
|
}, function($ctx2) {$ctx2.fillBlock({exception:exception},$ctx1)})}));
|
|
}, function($ctx2) {$ctx2.fillBlock({exception:exception},$ctx1)})}));
|
|
|
|
+$3=self;
|
|
|
|
+_st($3)._rawRenameClass_to_(oldClass,tmp);
|
|
|
|
+$4=_st($3)._rawRenameClass_to_(newClass,aString);
|
|
|
|
+_st(_st(oldClass)._subclasses())._do_((function(each){
|
|
|
|
+return smalltalk.withContext(function($ctx2) {
return _st(self)._migrateClass_superclass_(each,newClass);
|
|
|
|
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
|
|
_st(self)._basicRemoveClass_(oldClass);
|
|
_st(self)._basicRemoveClass_(oldClass);
|
|
-$3=newClass;
|
|
|
|
-return $3;
|
|
|
|
-}, function($ctx1) {$ctx1.fill(self,"migrateClassNamed:superclass:instanceVariableNames:package:",{aString:aString,aClass:aClass,aCollection:aCollection,packageName:packageName,oldClass:oldClass,newClass:newClass}, smalltalk.ClassBuilder)})},
|
|
|
|
|
|
+$5=newClass;
|
|
|
|
+return $5;
|
|
|
|
+}, function($ctx1) {$ctx1.fill(self,"migrateClassNamed:superclass:instanceVariableNames:package:",{aString:aString,aClass:aClass,aCollection:aCollection,packageName:packageName,oldClass:oldClass,newClass:newClass,tmp:tmp}, smalltalk.ClassBuilder)})},
|
|
args: ["aString", "aClass", "aCollection", "packageName"],
|
|
args: ["aString", "aClass", "aCollection", "packageName"],
|
|
-source: "migrateClassNamed: aString superclass: aClass instanceVariableNames: aCollection package: packageName\x0a\x09| oldClass newClass |\x0a \x0a oldClass := Smalltalk current at: aString.\x0a \x0a \x22Rename the old class for existing instances\x22\x0a\x09self basicRenameClass: oldClass to: 'Old', aString.\x0a \x0a newClass := self \x0a\x09\x09addSubclassOf: aClass\x0a\x09\x09named: aString \x0a\x09\x09instanceVariableNames: aCollection\x0a\x09\x09package: packageName.\x0a\x0a\x09oldClass subclasses do: [ :each |\x0a \x09self migrateClass: each superclass: newClass ].\x0a\x0a [ self copyClass: oldClass to: newClass ] \x0a \x09on: Error\x0a do: [ :exception |\x0a \x09self \x0a \x09basicRemoveClass: newClass;\x0a \x09basicRenameClass: oldClass to: aString.\x0a exception signal ].\x0a \x0a self basicRemoveClass: oldClass.\x0a\x09^newClass",
|
|
|
|
-messageSends: ["at:", "current", "basicRenameClass:to:", ",", "addSubclassOf:named:instanceVariableNames:package:", "do:", "migrateClass:superclass:", "subclasses", "on:do:", "basicRemoveClass:", "signal", "copyClass:to:"],
|
|
|
|
|
|
+source: "migrateClassNamed: aString superclass: aClass instanceVariableNames: aCollection package: packageName\x0a\x09| oldClass newClass tmp |\x0a \x0a tmp := 'new*', aString.\x0a oldClass := Smalltalk current at: aString.\x0a \x0a newClass := self \x0a\x09\x09addSubclassOf: aClass\x0a\x09\x09named: tmp\x0a\x09\x09instanceVariableNames: aCollection\x0a\x09\x09package: packageName.\x0a\x0a\x09self basicSwapClassNames: oldClass with: newClass.\x0a\x0a\x09[ self copyClass: oldClass to: newClass ]\x0a\x09\x09on: Error\x0a\x09\x09do: [ :exception |\x0a\x09\x09\x09self\x0a \x09basicSwapClassNames: oldClass with: newClass;\x0a \x09basicRemoveClass: newClass.\x0a exception signal ].\x0a\x0a\x09self\x0a\x09\x09rawRenameClass: oldClass to: tmp;\x0a rawRenameClass: newClass to: aString.\x0a\x0a\x09oldClass subclasses do: [ :each |\x0a \x09self migrateClass: each superclass: newClass ].\x0a\x0a self basicRemoveClass: oldClass.\x0a\x09^newClass",
|
|
|
|
+messageSends: [",", "at:", "current", "addSubclassOf:named:instanceVariableNames:package:", "basicSwapClassNames:with:", "on:do:", "basicRemoveClass:", "signal", "copyClass:to:", "rawRenameClass:to:", "do:", "migrateClass:superclass:", "subclasses"],
|
|
referencedClasses: ["Smalltalk", "Error"]
|
|
referencedClasses: ["Smalltalk", "Error"]
|
|
}),
|
|
}),
|
|
smalltalk.ClassBuilder);
|
|
smalltalk.ClassBuilder);
|
|
|
|
|
|
|
|
+smalltalk.addMethod(
|
|
|
|
+"_rawRenameClass_to_",
|
|
|
|
+smalltalk.method({
|
|
|
|
+selector: "rawRenameClass:to:",
|
|
|
|
+category: 'private',
|
|
|
|
+fn: function (aClass,aString){
|
|
|
|
+var self=this;
|
|
|
|
+return smalltalk.withContext(function($ctx1) {
|
|
|
|
+ smalltalk[aString] = aClass;
|
|
|
|
+ ;
|
|
|
|
+return self}, function($ctx1) {$ctx1.fill(self,"rawRenameClass:to:",{aClass:aClass,aString:aString}, smalltalk.ClassBuilder)})},
|
|
|
|
+args: ["aClass", "aString"],
|
|
|
|
+source: "rawRenameClass: aClass to: aString\x0a\x09<\x0a\x09\x09smalltalk[aString] = aClass;\x0a\x09>",
|
|
|
|
+messageSends: [],
|
|
|
|
+referencedClasses: []
|
|
|
|
+}),
|
|
|
|
+smalltalk.ClassBuilder);
|
|
|
|
+
|
|
smalltalk.addMethod(
|
|
smalltalk.addMethod(
|
|
"_renameClass_to_",
|
|
"_renameClass_to_",
|
|
smalltalk.method({
|
|
smalltalk.method({
|