|
@@ -138,7 +138,7 @@ return $recv($2).__lt($recv(b)._name());
|
|
|
|
|
|
return $core.withContext(function($ctx2) {
|
|
|
|
|
|
-return $recv([each,$recv(each)._theMetaClass()])._do_((function(behavior){
|
|
|
+return $recv($recv([each,$recv(each)._theMetaClass()])._copyWithout_(nil))._do_((function(behavior){
|
|
|
|
|
|
return $core.withContext(function($ctx3) {
|
|
|
|
|
@@ -164,10 +164,10 @@ return result;
|
|
|
},
|
|
|
|
|
|
args: ["aPackage"],
|
|
|
-source: "extensionProtocolsOfPackage: aPackage\x0a\x09| extensionName result |\x0a\x09\x0a\x09extensionName := '*', aPackage name.\x0a\x09result := OrderedCollection new.\x0a\x09\x0a\x09\x22The classes must be loaded since it is extensions only.\x0a\x09Therefore topological sorting (dependency resolution) does not matter here.\x0a\x09Not sorting topologically improves the speed by a number of magnitude.\x0a\x09\x0a\x09Not to shuffle diffs, classes are sorted by their name.\x22\x0a\x09\x0a\x09(Smalltalk classes asArray sorted: [ :a :b | a name < b name ]) do: [ :each |\x0a\x09\x09{each. each theMetaClass} do: [ :behavior |\x0a\x09\x09\x09(behavior protocols includes: extensionName) ifTrue: [\x0a\x09\x09\x09\x09result add: (ExportMethodProtocol name: extensionName theClass: behavior) ] ] ].\x0a\x0a\x09^ result",
|
|
|
+source: "extensionProtocolsOfPackage: aPackage\x0a\x09| extensionName result |\x0a\x09\x0a\x09extensionName := '*', aPackage name.\x0a\x09result := OrderedCollection new.\x0a\x09\x0a\x09\x22The classes must be loaded since it is extensions only.\x0a\x09Therefore topological sorting (dependency resolution) does not matter here.\x0a\x09Not sorting topologically improves the speed by a number of magnitude.\x0a\x09\x0a\x09Not to shuffle diffs, classes are sorted by their name.\x22\x0a\x09\x0a\x09(Smalltalk classes asArray sorted: [ :a :b | a name < b name ]) do: [ :each |\x0a\x09\x09({each. each theMetaClass} copyWithout: nil) do: [ :behavior |\x0a\x09\x09\x09(behavior protocols includes: extensionName) ifTrue: [\x0a\x09\x09\x09\x09result add: (ExportMethodProtocol name: extensionName theClass: behavior) ] ] ].\x0a\x0a\x09^ result",
|
|
|
referencedClasses: ["OrderedCollection", "Smalltalk", "ExportMethodProtocol"],
|
|
|
|
|
|
-messageSends: [",", "name", "new", "do:", "sorted:", "asArray", "classes", "<", "theMetaClass", "ifTrue:", "includes:", "protocols", "add:", "name:theClass:"]
|
|
|
+messageSends: [",", "name", "new", "do:", "sorted:", "asArray", "classes", "<", "copyWithout:", "theMetaClass", "ifTrue:", "includes:", "protocols", "add:", "name:theClass:"]
|
|
|
}),
|
|
|
$globals.AbstractExporter);
|
|
|
|
|
@@ -546,7 +546,7 @@ var self=this;
|
|
|
|
|
|
return $core.withContext(function($ctx1) {
|
|
|
|
|
|
-var $1;
|
|
|
+var $1,$receiver;
|
|
|
self._exportPackageDefinitionOf_on_(aPackage,aStream);
|
|
|
self._exportPackageImportsOf_on_(aPackage,aStream);
|
|
|
$recv($recv(aPackage)._sortedClasses())._do_((function(each){
|
|
@@ -557,9 +557,13 @@ self._exportBehavior_on_(each,aStream);
|
|
|
|
|
|
$ctx2.sendIdx["exportBehavior:on:"]=1;
|
|
|
|
|
|
-$1=$recv($recv(each)._class())._isMetaclass();
|
|
|
-if($core.assert($1)){
|
|
|
-return self._exportBehavior_on_($recv(each)._theMetaClass(),aStream);
|
|
|
+$1=$recv(each)._theMetaClass();
|
|
|
+if(($receiver = $1) == null || $receiver.isNil){
|
|
|
+return $1;
|
|
|
+} else {
|
|
|
+var meta;
|
|
|
+meta=$receiver;
|
|
|
+return self._exportBehavior_on_(meta,aStream);
|
|
|
}
|
|
|
|
|
|
}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
|
|
@@ -573,10 +577,10 @@ return self;
|
|
|
},
|
|
|
|
|
|
args: ["aPackage", "aStream"],
|
|
|
-source: "exportPackage: aPackage on: aStream\x0a\x0a\x09self\x0a\x09\x09exportPackageDefinitionOf: aPackage on: aStream;\x0a\x09\x09exportPackageImportsOf: aPackage on: aStream.\x0a\x09\x0a\x09aPackage sortedClasses do: [ :each |\x0a\x09\x09self exportBehavior: each on: aStream.\x0a\x09\x09each class isMetaclass ifTrue: [\x0a\x09\x09\x09self exportBehavior: each theMetaClass on: aStream ] ].\x0a\x09\x0a\x09self \x0a\x09\x09exportProtocols: (self extensionProtocolsOfPackage: aPackage)\x0a\x09\x09on: aStream",
|
|
|
+source: "exportPackage: aPackage on: aStream\x0a\x0a\x09self\x0a\x09\x09exportPackageDefinitionOf: aPackage on: aStream;\x0a\x09\x09exportPackageImportsOf: aPackage on: aStream.\x0a\x09\x0a\x09aPackage sortedClasses do: [ :each |\x0a\x09\x09self exportBehavior: each on: aStream.\x0a\x09\x09each theMetaClass ifNotNil: [ :meta | self exportBehavior: meta on: aStream ] ].\x0a\x09\x0a\x09self \x0a\x09\x09exportProtocols: (self extensionProtocolsOfPackage: aPackage)\x0a\x09\x09on: aStream",
|
|
|
referencedClasses: [],
|
|
|
|
|
|
-messageSends: ["exportPackageDefinitionOf:on:", "exportPackageImportsOf:on:", "do:", "sortedClasses", "exportBehavior:on:", "ifTrue:", "isMetaclass", "class", "theMetaClass", "exportProtocols:on:", "extensionProtocolsOfPackage:"]
|
|
|
+messageSends: ["exportPackageDefinitionOf:on:", "exportPackageImportsOf:on:", "do:", "sortedClasses", "exportBehavior:on:", "ifNotNil:", "theMetaClass", "exportProtocols:on:", "extensionProtocolsOfPackage:"]
|
|
|
}),
|
|
|
$globals.ChunkExporter);
|
|
|
|
|
@@ -1540,7 +1544,7 @@ var self=this;
|
|
|
|
|
|
return $core.withContext(function($ctx1) {
|
|
|
|
|
|
-var $1;
|
|
|
+var $1,$receiver;
|
|
|
self._exportPackagePrologueOf_on_(aPackage,aStream);
|
|
|
self._exportPackageDefinitionOf_on_(aPackage,aStream);
|
|
|
self._exportPackageContextOf_on_(aPackage,aStream);
|
|
@@ -1554,9 +1558,13 @@ self._exportBehavior_on_(each,aStream);
|
|
|
|
|
|
$ctx2.sendIdx["exportBehavior:on:"]=1;
|
|
|
|
|
|
-$1=$recv($recv(each)._class())._isMetaclass();
|
|
|
-if($core.assert($1)){
|
|
|
-return self._exportBehavior_on_($recv(each)._theMetaClass(),aStream);
|
|
|
+$1=$recv(each)._theMetaClass();
|
|
|
+if(($receiver = $1) == null || $receiver.isNil){
|
|
|
+return $1;
|
|
|
+} else {
|
|
|
+var meta;
|
|
|
+meta=$receiver;
|
|
|
+return self._exportBehavior_on_(meta,aStream);
|
|
|
}
|
|
|
|
|
|
}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
|
|
@@ -1582,10 +1590,10 @@ return self;
|
|
|
},
|
|
|
|
|
|
args: ["aPackage", "aStream"],
|
|
|
-source: "exportPackage: aPackage on: aStream\x0a\x09\x0a\x09self \x0a\x09\x09exportPackagePrologueOf: aPackage on: aStream;\x0a\x09\x09exportPackageDefinitionOf: aPackage on: aStream;\x0a\x09\x09exportPackageContextOf: aPackage on: aStream;\x0a\x09\x09exportPackageImportsOf: aPackage on: aStream;\x0a\x09\x09exportPackageTransportOf: aPackage on: aStream.\x0a\x09\x0a\x09aPackage sortedClasses do: [ :each |\x0a\x09\x09self exportBehavior: each on: aStream.\x0a\x09\x09each class isMetaclass ifTrue: [\x0a\x09\x09\x09self exportBehavior: each theMetaClass on: aStream ] ].\x0a\x09\x09\x09\x0a\x09(self extensionMethodsOfPackage: aPackage) do: [ :each |\x0a\x09\x09self exportMethod: each on: aStream ].\x0a\x09\x09\x0a\x09self exportPackageEpilogueOf: aPackage on: aStream",
|
|
|
+source: "exportPackage: aPackage on: aStream\x0a\x09\x0a\x09self \x0a\x09\x09exportPackagePrologueOf: aPackage on: aStream;\x0a\x09\x09exportPackageDefinitionOf: aPackage on: aStream;\x0a\x09\x09exportPackageContextOf: aPackage on: aStream;\x0a\x09\x09exportPackageImportsOf: aPackage on: aStream;\x0a\x09\x09exportPackageTransportOf: aPackage on: aStream.\x0a\x09\x0a\x09aPackage sortedClasses do: [ :each |\x0a\x09\x09self exportBehavior: each on: aStream.\x0a\x09\x09each theMetaClass ifNotNil: [ :meta | self exportBehavior: meta on: aStream ] ].\x0a\x09\x09\x09\x0a\x09(self extensionMethodsOfPackage: aPackage) do: [ :each |\x0a\x09\x09self exportMethod: each on: aStream ].\x0a\x09\x09\x0a\x09self exportPackageEpilogueOf: aPackage on: aStream",
|
|
|
referencedClasses: [],
|
|
|
|
|
|
-messageSends: ["exportPackagePrologueOf:on:", "exportPackageDefinitionOf:on:", "exportPackageContextOf:on:", "exportPackageImportsOf:on:", "exportPackageTransportOf:on:", "do:", "sortedClasses", "exportBehavior:on:", "ifTrue:", "isMetaclass", "class", "theMetaClass", "extensionMethodsOfPackage:", "exportMethod:on:", "exportPackageEpilogueOf:on:"]
|
|
|
+messageSends: ["exportPackagePrologueOf:on:", "exportPackageDefinitionOf:on:", "exportPackageContextOf:on:", "exportPackageImportsOf:on:", "exportPackageTransportOf:on:", "do:", "sortedClasses", "exportBehavior:on:", "ifNotNil:", "theMetaClass", "extensionMethodsOfPackage:", "exportMethod:on:", "exportPackageEpilogueOf:on:"]
|
|
|
}),
|
|
|
$globals.Exporter);
|
|
|
|