|
@@ -104,26 +104,33 @@ function $OrderedCollection(){return globals.OrderedCollection||(typeof OrderedC
|
|
function $Smalltalk(){return globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
|
|
function $Smalltalk(){return globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
|
|
function $ExportMethodProtocol(){return globals.ExportMethodProtocol||(typeof ExportMethodProtocol=="undefined"?nil:ExportMethodProtocol)}
|
|
function $ExportMethodProtocol(){return globals.ExportMethodProtocol||(typeof ExportMethodProtocol=="undefined"?nil:ExportMethodProtocol)}
|
|
return smalltalk.withContext(function($ctx1) {
|
|
return smalltalk.withContext(function($ctx1) {
|
|
-var $1,$2;
|
|
|
|
-extensionName="*".__comma(_st(aPackage)._name());
|
|
|
|
|
|
+var $1,$2,$3,$4;
|
|
|
|
+$1=_st(aPackage)._name();
|
|
|
|
+$ctx1.sendIdx["name"]=1;
|
|
|
|
+extensionName="*".__comma($1);
|
|
result=_st($OrderedCollection())._new();
|
|
result=_st($OrderedCollection())._new();
|
|
-_st(_st($Smalltalk())._classes())._do_((function(each){
|
|
|
|
|
|
+_st(_st(_st(_st($Smalltalk())._classes())._asArray())._sorted_((function(a,b){
|
|
|
|
+return smalltalk.withContext(function($ctx2) {
|
|
|
|
+$2=_st(a)._name();
|
|
|
|
+$ctx2.sendIdx["name"]=2;
|
|
|
|
+return _st($2).__lt(_st(b)._name());
|
|
|
|
+}, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,1)})})))._do_((function(each){
|
|
return smalltalk.withContext(function($ctx2) {
|
|
return smalltalk.withContext(function($ctx2) {
|
|
return _st([each,_st(each)._class()])._do_((function(behavior){
|
|
return _st([each,_st(each)._class()])._do_((function(behavior){
|
|
return smalltalk.withContext(function($ctx3) {
|
|
return smalltalk.withContext(function($ctx3) {
|
|
-$1=_st(_st(behavior)._protocols())._includes_(extensionName);
|
|
|
|
-if(smalltalk.assert($1)){
|
|
|
|
|
|
+$3=_st(_st(behavior)._protocols())._includes_(extensionName);
|
|
|
|
+if(smalltalk.assert($3)){
|
|
return _st(result)._add_(_st($ExportMethodProtocol())._name_theClass_(extensionName,behavior));
|
|
return _st(result)._add_(_st($ExportMethodProtocol())._name_theClass_(extensionName,behavior));
|
|
};
|
|
};
|
|
-}, function($ctx3) {$ctx3.fillBlock({behavior:behavior},$ctx2,2)})}));
|
|
|
|
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
|
|
|
|
|
|
+}, function($ctx3) {$ctx3.fillBlock({behavior:behavior},$ctx2,3)})}));
|
|
|
|
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}));
|
|
$ctx1.sendIdx["do:"]=1;
|
|
$ctx1.sendIdx["do:"]=1;
|
|
-$2=result;
|
|
|
|
-return $2;
|
|
|
|
|
|
+$4=result;
|
|
|
|
+return $4;
|
|
}, function($ctx1) {$ctx1.fill(self,"extensionProtocolsOfPackage:",{aPackage:aPackage,extensionName:extensionName,result:result},globals.AbstractExporter)})},
|
|
}, function($ctx1) {$ctx1.fill(self,"extensionProtocolsOfPackage:",{aPackage:aPackage,extensionName:extensionName,result:result},globals.AbstractExporter)})},
|
|
args: ["aPackage"],
|
|
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 sorting (dependency resolution) does not matter here.\x0a\x09Not sorting improves the speed by a number of magnitude.\x22\x0a\x09\x0a\x09Smalltalk classes do: [ :each |\x0a\x09\x09{each. each class} 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",
|
|
|
|
-messageSends: [",", "name", "new", "do:", "classes", "class", "ifTrue:", "includes:", "protocols", "add:", "name:theClass:"],
|
|
|
|
|
|
+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 class} 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",
|
|
|
|
+messageSends: [",", "name", "new", "do:", "sorted:", "asArray", "classes", "<", "class", "ifTrue:", "includes:", "protocols", "add:", "name:theClass:"],
|
|
referencedClasses: ["OrderedCollection", "Smalltalk", "ExportMethodProtocol"]
|
|
referencedClasses: ["OrderedCollection", "Smalltalk", "ExportMethodProtocol"]
|
|
}),
|
|
}),
|
|
globals.AbstractExporter);
|
|
globals.AbstractExporter);
|