Browse Source

Use printOn: and asSymbolPrintOn: in exporting.

Herbert Vojčík 7 years ago
parent
commit
a8208d8ea8

+ 33 - 116
src/Kernel-Classes.js

@@ -1676,84 +1676,41 @@ var self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $2,$3,$1,$4,$5;
+var $1;
 return $recv($globals.String)._streamContents_((function(stream){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx2) {
 //>>excludeEnd("ctx");
-$recv(stream)._nextPutAll_($recv(self._superclass())._asString());
+$recv(self._superclass())._printOn_(stream);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["nextPutAll:"]=1;
-//>>excludeEnd("ctx");
-$recv(stream)._nextPutAll_(" subclass: #");
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["nextPutAll:"]=2;
+$ctx2.sendIdx["printOn:"]=1;
 //>>excludeEnd("ctx");
-$recv(stream)._nextPutAll_(self._name());
+$recv(stream)._nextPutAll_(" subclass: ");
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["nextPutAll:"]=3;
+$ctx2.sendIdx["nextPutAll:"]=1;
 //>>excludeEnd("ctx");
-$2=$recv($globals.String)._lf();
+$recv(self._name())._asSymbolPrintOn_(stream);
+$recv(stream)._lf();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["lf"]=1;
 //>>excludeEnd("ctx");
-$3=$recv($globals.String)._tab();
+$recv(stream)._tab();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["tab"]=1;
 //>>excludeEnd("ctx");
-$1=$recv($2).__comma($3);
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx[","]=1;
-//>>excludeEnd("ctx");
-$recv(stream)._nextPutAll_($1);
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["nextPutAll:"]=4;
-//>>excludeEnd("ctx");
-$4=$recv(stream)._nextPutAll_("instanceVariableNames: '");
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["nextPutAll:"]=5;
-//>>excludeEnd("ctx");
-$4;
-$recv(self._instanceVariableNames())._do_separatedBy_((function(each){
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx3) {
-//>>excludeEnd("ctx");
-return $recv(stream)._nextPutAll_(each);
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx3.sendIdx["nextPutAll:"]=6;
-//>>excludeEnd("ctx");
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
-//>>excludeEnd("ctx");
-}),(function(){
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx3) {
-//>>excludeEnd("ctx");
-return $recv(stream)._nextPutAll_(" ");
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx3.sendIdx["nextPutAll:"]=7;
-//>>excludeEnd("ctx");
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
-//>>excludeEnd("ctx");
-}));
-$5=$recv("'".__comma($recv($globals.String)._lf())).__comma($recv($globals.String)._tab());
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx[","]=2;
-//>>excludeEnd("ctx");
-$recv(stream)._nextPutAll_($5);
+$1=$recv(stream)._nextPutAll_("instanceVariableNames: ");
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["nextPutAll:"]=8;
-//>>excludeEnd("ctx");
-$recv(stream)._nextPutAll_("package: '");
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["nextPutAll:"]=9;
+$ctx2.sendIdx["nextPutAll:"]=2;
 //>>excludeEnd("ctx");
-$recv(stream)._nextPutAll_(self._category());
+$1;
+$recv(" "._join_(self._instanceVariableNames()))._printOn_(stream);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["nextPutAll:"]=10;
+$ctx2.sendIdx["printOn:"]=2;
 //>>excludeEnd("ctx");
-return $recv(stream)._nextPutAll_("'");
+$recv(stream)._lf();
+$recv(stream)._tab();
+$recv(stream)._nextPutAll_("package: ");
+return $recv(self._category())._printOn_(stream);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)});
 //>>excludeEnd("ctx");
@@ -1764,10 +1721,10 @@ return $recv(stream)._nextPutAll_("'");
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
-source: "definition\x0a\x09^ String streamContents: [ :stream |\x0a\x09\x09stream\x0a\x09\x09\x09nextPutAll: self superclass asString;\x0a\x09\x09\x09nextPutAll: ' subclass: #';\x0a\x09\x09\x09nextPutAll: self name;\x0a\x09\x09\x09nextPutAll: String lf, String tab;\x0a\x09\x09\x09nextPutAll: 'instanceVariableNames: '''.\x0a\x09\x09self instanceVariableNames\x0a\x09\x09\x09do: [ :each | stream nextPutAll: each ]\x0a\x09\x09\x09separatedBy: [ stream nextPutAll: ' ' ].\x0a\x09\x09stream\x0a\x09\x09\x09nextPutAll: '''', String lf, String tab;\x0a\x09\x09\x09nextPutAll: 'package: ''';\x0a\x09\x09\x09nextPutAll: self category;\x0a\x09\x09\x09nextPutAll: '''' ]",
+source: "definition\x0a\x09^ String streamContents: [ :stream |\x0a\x09\x09self superclass printOn: stream.\x0a\x09\x09stream nextPutAll: ' subclass: '.\x0a\x09\x09self name asSymbolPrintOn: stream.\x0a\x09\x09stream lf; tab; nextPutAll: 'instanceVariableNames: '.\x0a\x09\x09(' ' join: self instanceVariableNames) printOn: stream.\x0a\x09\x09stream lf; tab; nextPutAll: 'package: '.\x0a\x09\x09self category printOn: stream ]",
 referencedClasses: ["String"],
 //>>excludeEnd("ide");
-messageSends: ["streamContents:", "nextPutAll:", "asString", "superclass", "name", ",", "lf", "tab", "do:separatedBy:", "instanceVariableNames", "category"]
+messageSends: ["streamContents:", "printOn:", "superclass", "nextPutAll:", "asSymbolPrintOn:", "name", "lf", "tab", "join:", "instanceVariableNames", "category"]
 }),
 $globals.Class);
 
@@ -2083,44 +2040,16 @@ var self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1;
 return $recv($globals.String)._streamContents_((function(stream){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx2) {
 //>>excludeEnd("ctx");
-$recv(stream)._nextPutAll_(self._asString());
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["nextPutAll:"]=1;
-//>>excludeEnd("ctx");
-$1=$recv(stream)._nextPutAll_(" instanceVariableNames: '");
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["nextPutAll:"]=2;
-//>>excludeEnd("ctx");
-$1;
-$recv(self._instanceVariableNames())._do_separatedBy_((function(each){
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx3) {
-//>>excludeEnd("ctx");
-return $recv(stream)._nextPutAll_(each);
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx3.sendIdx["nextPutAll:"]=3;
-//>>excludeEnd("ctx");
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
-//>>excludeEnd("ctx");
-}),(function(){
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx3) {
-//>>excludeEnd("ctx");
-return $recv(stream)._nextPutAll_(" ");
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx3.sendIdx["nextPutAll:"]=4;
-//>>excludeEnd("ctx");
+self._printOn_(stream);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
+$ctx2.sendIdx["printOn:"]=1;
 //>>excludeEnd("ctx");
-}));
-return $recv(stream)._nextPutAll_("'");
+$recv(stream)._nextPutAll_(" instanceVariableNames: ");
+return $recv(" "._join_(self._instanceVariableNames()))._printOn_(stream);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)});
 //>>excludeEnd("ctx");
@@ -2131,10 +2060,10 @@ return $recv(stream)._nextPutAll_("'");
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
-source: "definition\x0a\x09^ String streamContents: [ :stream |\x0a\x09\x09stream\x0a\x09\x09\x09nextPutAll: self asString;\x0a\x09\x09\x09nextPutAll: ' instanceVariableNames: '''.\x0a\x09\x09self instanceVariableNames\x0a\x09\x09\x09do: [ :each | stream nextPutAll: each ]\x0a\x09\x09\x09separatedBy: [ stream nextPutAll: ' ' ].\x0a\x09\x09stream nextPutAll: '''' ]",
+source: "definition\x0a\x09^ String streamContents: [ :stream |\x0a\x09\x09self printOn: stream.\x0a\x09\x09stream nextPutAll: ' instanceVariableNames: '.\x0a\x09\x09(' ' join: self instanceVariableNames) printOn: stream ]",
 referencedClasses: ["String"],
 //>>excludeEnd("ide");
-messageSends: ["streamContents:", "nextPutAll:", "asString", "do:separatedBy:", "instanceVariableNames"]
+messageSends: ["streamContents:", "printOn:", "nextPutAll:", "join:", "instanceVariableNames"]
 }),
 $globals.Metaclass);
 
@@ -2417,27 +2346,15 @@ return $recv($globals.String)._streamContents_((function(stream){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx2) {
 //>>excludeEnd("ctx");
-$recv(stream)._nextPutAll_("Trait named: #");
+$recv(stream)._nextPutAll_("Trait named: ");
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["nextPutAll:"]=1;
 //>>excludeEnd("ctx");
-$recv(stream)._nextPutAll_(self._name());
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["nextPutAll:"]=2;
-//>>excludeEnd("ctx");
-$recv(stream)._nextPutAll_($recv($recv($globals.String)._lf()).__comma($recv($globals.String)._tab()));
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["nextPutAll:"]=3;
-//>>excludeEnd("ctx");
-$recv(stream)._nextPutAll_("package: '");
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["nextPutAll:"]=4;
-//>>excludeEnd("ctx");
-$recv(stream)._nextPutAll_(self._category());
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["nextPutAll:"]=5;
-//>>excludeEnd("ctx");
-return $recv(stream)._nextPutAll_("'");
+$recv(self._name())._asSymbolPrintOn_(stream);
+$recv(stream)._lf();
+$recv(stream)._tab();
+$recv(stream)._nextPutAll_("package: ");
+return $recv(self._category())._printOn_(stream);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)});
 //>>excludeEnd("ctx");
@@ -2448,10 +2365,10 @@ return $recv(stream)._nextPutAll_("'");
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
-source: "definition\x0a\x09^ String streamContents: [ :stream |\x0a\x09\x09stream\x0a\x09\x09\x09nextPutAll: 'Trait named: #';\x0a\x09\x09\x09nextPutAll: self name;\x0a\x09\x09\x09nextPutAll: String lf, String tab;\x0a\x09\x09\x09nextPutAll: 'package: ''';\x0a\x09\x09\x09nextPutAll: self category;\x0a\x09\x09\x09nextPutAll: '''' ]",
+source: "definition\x0a\x09^ String streamContents: [ :stream |\x0a\x09\x09stream nextPutAll: 'Trait named: '.\x0a\x09\x09self name asSymbolPrintOn: stream.\x0a\x09\x09stream lf; tab; nextPutAll: 'package: '.\x0a\x09\x09self category printOn: stream ]",
 referencedClasses: ["String"],
 //>>excludeEnd("ide");
-messageSends: ["streamContents:", "nextPutAll:", "name", ",", "lf", "tab", "category"]
+messageSends: ["streamContents:", "nextPutAll:", "asSymbolPrintOn:", "name", "lf", "tab", "printOn:", "category"]
 }),
 $globals.Trait);
 

+ 14 - 28
src/Kernel-Classes.st

@@ -393,20 +393,13 @@ classTag
 
 definition
 	^ String streamContents: [ :stream |
-		stream
-			nextPutAll: self superclass asString;
-			nextPutAll: ' subclass: #';
-			nextPutAll: self name;
-			nextPutAll: String lf, String tab;
-			nextPutAll: 'instanceVariableNames: '''.
-		self instanceVariableNames
-			do: [ :each | stream nextPutAll: each ]
-			separatedBy: [ stream nextPutAll: ' ' ].
-		stream
-			nextPutAll: '''', String lf, String tab;
-			nextPutAll: 'package: ''';
-			nextPutAll: self category;
-			nextPutAll: '''' ]
+		self superclass printOn: stream.
+		stream nextPutAll: ' subclass: '.
+		self name asSymbolPrintOn: stream.
+		stream lf; tab; nextPutAll: 'instanceVariableNames: '.
+		(' ' join: self instanceVariableNames) printOn: stream.
+		stream lf; tab; nextPutAll: 'package: '.
+		self category printOn: stream ]
 !
 
 package
@@ -498,13 +491,9 @@ My instances are metaclasses, one for each real class, and have a single instanc
 
 definition
 	^ String streamContents: [ :stream |
-		stream
-			nextPutAll: self asString;
-			nextPutAll: ' instanceVariableNames: '''.
-		self instanceVariableNames
-			do: [ :each | stream nextPutAll: each ]
-			separatedBy: [ stream nextPutAll: ' ' ].
-		stream nextPutAll: '''' ]
+		self printOn: stream.
+		stream nextPutAll: ' instanceVariableNames: '.
+		(' ' join: self instanceVariableNames) printOn: stream ]
 !
 
 instanceClass
@@ -573,13 +562,10 @@ classTag
 
 definition
 	^ String streamContents: [ :stream |
-		stream
-			nextPutAll: 'Trait named: #';
-			nextPutAll: self name;
-			nextPutAll: String lf, String tab;
-			nextPutAll: 'package: ''';
-			nextPutAll: self category;
-			nextPutAll: '''' ]
+		stream nextPutAll: 'Trait named: '.
+		self name asSymbolPrintOn: stream.
+		stream lf; tab; nextPutAll: 'package: '.
+		self category printOn: stream ]
 !
 
 package

+ 26 - 85
src/Kernel-Infrastructure.js

@@ -865,57 +865,30 @@ var self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $2,$3,$1,$4,$5;
 return $recv($globals.String)._streamContents_((function(stream){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx2) {
 //>>excludeEnd("ctx");
-$recv(stream)._nextPutAll_("Object");
+$recv(stream)._nextPutAll_("Object subclass: #NameOfSubclass");
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["nextPutAll:"]=1;
 //>>excludeEnd("ctx");
-$recv(stream)._nextPutAll_(" subclass: #NameOfSubclass");
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["nextPutAll:"]=2;
-//>>excludeEnd("ctx");
-$2=$recv($globals.String)._lf();
+$recv(stream)._lf();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["lf"]=1;
 //>>excludeEnd("ctx");
-$3=$recv($globals.String)._tab();
+$recv(stream)._tab();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["tab"]=1;
 //>>excludeEnd("ctx");
-$1=$recv($2).__comma($3);
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx[","]=1;
-//>>excludeEnd("ctx");
-$recv(stream)._nextPutAll_($1);
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["nextPutAll:"]=3;
-//>>excludeEnd("ctx");
-$4=$recv(stream)._nextPutAll_("instanceVariableNames: ''");
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["nextPutAll:"]=4;
-//>>excludeEnd("ctx");
-$4;
-$5=$recv("'".__comma($recv($globals.String)._lf())).__comma($recv($globals.String)._tab());
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx[","]=2;
-//>>excludeEnd("ctx");
-$recv(stream)._nextPutAll_($5);
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["nextPutAll:"]=5;
-//>>excludeEnd("ctx");
-$recv(stream)._nextPutAll_("package: '");
+$recv(stream)._nextPutAll_("instanceVariableNames: ''");
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["nextPutAll:"]=6;
-//>>excludeEnd("ctx");
-$recv(stream)._nextPutAll_(self._name());
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["nextPutAll:"]=7;
+$ctx2.sendIdx["nextPutAll:"]=2;
 //>>excludeEnd("ctx");
-return $recv(stream)._nextPutAll_("'");
+$recv(stream)._lf();
+$recv(stream)._tab();
+$recv(stream)._nextPutAll_("package: ");
+return $recv(self._name())._printOn_(stream);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)});
 //>>excludeEnd("ctx");
@@ -926,10 +899,10 @@ return $recv(stream)._nextPutAll_("'");
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
-source: "classTemplate\x0a\x09^ String streamContents: [ :stream |\x0a\x09\x09stream\x0a\x09\x09\x09nextPutAll: 'Object';\x0a\x09\x09\x09nextPutAll: ' subclass: #NameOfSubclass';\x0a\x09\x09\x09nextPutAll: String lf, String tab;\x0a\x09\x09\x09nextPutAll: 'instanceVariableNames: '''''.\x0a\x09\x09stream\x0a\x09\x09\x09nextPutAll: '''', String lf, String tab;\x0a\x09\x09\x09nextPutAll: 'package: ''';\x0a\x09\x09\x09nextPutAll: self name;\x0a\x09\x09\x09nextPutAll: '''' ]",
+source: "classTemplate\x0a\x09^ String streamContents: [ :stream |\x0a\x09\x09stream\x0a\x09\x09\x09nextPutAll: 'Object subclass: #NameOfSubclass'; lf;\x0a\x09\x09\x09tab; nextPutAll: 'instanceVariableNames: '''''; lf;\x0a\x09\x09\x09tab; nextPutAll: 'package: '.\x0a\x09\x09self name printOn: stream ]",
 referencedClasses: ["String"],
 //>>excludeEnd("ide");
-messageSends: ["streamContents:", "nextPutAll:", ",", "lf", "tab", "name"]
+messageSends: ["streamContents:", "nextPutAll:", "lf", "tab", "printOn:", "name"]
 }),
 $globals.Package);
 
@@ -965,7 +938,7 @@ var self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$3,$4,$2,$6,$5,$8,$9,$7,$10;
+var $1,$2;
 return $recv($globals.String)._streamContents_((function(stream){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx2) {
@@ -978,73 +951,41 @@ $recv(stream)._nextPutAll_($1);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["nextPutAll:"]=1;
 //>>excludeEnd("ctx");
-$3=$recv($globals.String)._lf();
+$recv(stream)._lf();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["lf"]=1;
 //>>excludeEnd("ctx");
-$4=$recv($globals.String)._tab();
+$recv(stream)._tab();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["tab"]=1;
 //>>excludeEnd("ctx");
-$2=$recv($3).__comma($4);
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx[","]=1;
-//>>excludeEnd("ctx");
-$recv(stream)._nextPutAll_($2);
+$2=$recv(stream)._nextPutAll_("named: ");
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["nextPutAll:"]=2;
 //>>excludeEnd("ctx");
-$recv(stream)._nextPutAll_("named: ");
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["nextPutAll:"]=3;
-//>>excludeEnd("ctx");
-$6="'".__comma(self._name());
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx[","]=3;
-//>>excludeEnd("ctx");
-$5=$recv($6).__comma("'");
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx[","]=2;
-//>>excludeEnd("ctx");
-$recv(stream)._nextPutAll_($5);
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["nextPutAll:"]=4;
-//>>excludeEnd("ctx");
-$8=$recv($globals.String)._lf();
+$2;
+$recv(self._name())._printOn_(stream);
+$recv(stream)._lf();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["lf"]=2;
 //>>excludeEnd("ctx");
-$9=$recv($globals.String)._tab();
+$recv(stream)._tab();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["tab"]=2;
 //>>excludeEnd("ctx");
-$7=$recv($8).__comma($9);
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx[","]=4;
-//>>excludeEnd("ctx");
-$recv(stream)._nextPutAll_($7);
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["nextPutAll:"]=5;
-//>>excludeEnd("ctx");
 $recv(stream)._nextPutAll_("imports: ");
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["nextPutAll:"]=6;
+$ctx2.sendIdx["nextPutAll:"]=3;
 //>>excludeEnd("ctx");
 $recv(stream)._nextPutAll_(self._importsDefinition());
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["nextPutAll:"]=7;
-//>>excludeEnd("ctx");
-$10=$recv($recv($globals.String)._lf()).__comma($recv($globals.String)._tab());
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx[","]=5;
-//>>excludeEnd("ctx");
-$recv(stream)._nextPutAll_($10);
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["nextPutAll:"]=8;
+$ctx2.sendIdx["nextPutAll:"]=4;
 //>>excludeEnd("ctx");
+$recv(stream)._lf();
+$recv(stream)._tab();
 $recv(stream)._nextPutAll_("transport: (");
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["nextPutAll:"]=9;
+$ctx2.sendIdx["nextPutAll:"]=5;
 //>>excludeEnd("ctx");
 return $recv(stream)._nextPutAll_($recv($recv(self._transport())._definition()).__comma(")"));
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
@@ -1057,10 +998,10 @@ return $recv(stream)._nextPutAll_($recv($recv(self._transport())._definition()).
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
-source: "definition\x0a\x09^ String streamContents: [ :stream |\x0a\x09\x09stream \x0a\x09\x09\x09nextPutAll: self class name;\x0a\x09\x09\x09nextPutAll: String lf, String tab;\x0a\x09\x09\x09nextPutAll: 'named: ';\x0a\x09\x09\x09nextPutAll: '''', self name, '''';\x0a\x09\x09\x09nextPutAll: String lf, String tab;\x0a\x09\x09\x09nextPutAll: 'imports: ';\x0a\x09\x09\x09nextPutAll: self importsDefinition;\x0a\x09\x09\x09nextPutAll: String lf, String tab;\x0a\x09\x09\x09nextPutAll: 'transport: (';\x0a\x09\x09\x09nextPutAll: self transport definition, ')' ]",
+source: "definition\x0a\x09^ String streamContents: [ :stream |\x0a\x09\x09stream \x0a\x09\x09\x09nextPutAll: self class name; lf;\x0a\x09\x09\x09tab; nextPutAll: 'named: '.\x0a\x09\x09self name printOn: stream.\x0a\x09\x09stream lf;\x0a\x09\x09\x09tab; nextPutAll: 'imports: '; nextPutAll: self importsDefinition; lf;\x0a\x09\x09\x09tab; nextPutAll: 'transport: ('; nextPutAll: self transport definition, ')' ]",
 referencedClasses: ["String"],
 //>>excludeEnd("ide");
-messageSends: ["streamContents:", "nextPutAll:", "name", "class", ",", "lf", "tab", "importsDefinition", "definition", "transport"]
+messageSends: ["streamContents:", "nextPutAll:", "name", "class", "lf", "tab", "printOn:", "importsDefinition", ",", "definition", "transport"]
 }),
 $globals.Package);
 

+ 10 - 19
src/Kernel-Infrastructure.st

@@ -273,30 +273,21 @@ beDirty
 classTemplate
 	^ String streamContents: [ :stream |
 		stream
-			nextPutAll: 'Object';
-			nextPutAll: ' subclass: #NameOfSubclass';
-			nextPutAll: String lf, String tab;
-			nextPutAll: 'instanceVariableNames: '''''.
-		stream
-			nextPutAll: '''', String lf, String tab;
-			nextPutAll: 'package: ''';
-			nextPutAll: self name;
-			nextPutAll: '''' ]
+			nextPutAll: 'Object subclass: #NameOfSubclass'; lf;
+			tab; nextPutAll: 'instanceVariableNames: '''''; lf;
+			tab; nextPutAll: 'package: '.
+		self name printOn: stream ]
 !
 
 definition
 	^ String streamContents: [ :stream |
 		stream 
-			nextPutAll: self class name;
-			nextPutAll: String lf, String tab;
-			nextPutAll: 'named: ';
-			nextPutAll: '''', self name, '''';
-			nextPutAll: String lf, String tab;
-			nextPutAll: 'imports: ';
-			nextPutAll: self importsDefinition;
-			nextPutAll: String lf, String tab;
-			nextPutAll: 'transport: (';
-			nextPutAll: self transport definition, ')' ]
+			nextPutAll: self class name; lf;
+			tab; nextPutAll: 'named: '.
+		self name printOn: stream.
+		stream lf;
+			tab; nextPutAll: 'imports: '; nextPutAll: self importsDefinition; lf;
+			tab; nextPutAll: 'transport: ('; nextPutAll: self transport definition, ')' ]
 !
 
 imports

+ 88 - 162
src/Platform-ImportExport.js

@@ -263,20 +263,17 @@ var self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2;
-$1="!".__comma(self._classNameFor_($recv(aCategory)._theClass()));
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx[","]=1;
-//>>excludeEnd("ctx");
-$recv(aStream)._nextPutAll_($1);
+var $1;
+$recv(aStream)._nextPutAll_("!".__comma(self._classNameFor_($recv(aCategory)._theClass())));
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["nextPutAll:"]=1;
 //>>excludeEnd("ctx");
-$2=$recv(" methodsFor: '".__comma($recv(aCategory)._name())).__comma("'!");
+$1=$recv(aStream)._nextPutAll_(" methodsFor: ");
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx[","]=2;
+$ctx1.sendIdx["nextPutAll:"]=2;
 //>>excludeEnd("ctx");
-$recv(aStream)._nextPutAll_($2);
+$recv($recv(aCategory)._name())._printOn_(aStream);
+$recv(aStream)._nextPutAll_("!");
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"exportCategoryPrologueOf:on:",{aCategory:aCategory,aStream:aStream},$globals.ChunkExporter)});
@@ -284,10 +281,10 @@ return self;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aCategory", "aStream"],
-source: "exportCategoryPrologueOf: aCategory on: aStream\x0a\x09aStream\x0a\x09\x09nextPutAll: '!', (self classNameFor: aCategory theClass);\x0a\x09\x09nextPutAll: ' methodsFor: ''', aCategory name, '''!'",
+source: "exportCategoryPrologueOf: aCategory on: aStream\x0a\x09aStream\x0a\x09\x09nextPutAll: '!', (self classNameFor: aCategory theClass);\x0a\x09\x09nextPutAll: ' methodsFor: '.\x0a\x09aCategory name printOn: aStream.\x0a\x09aStream nextPutAll: '!'",
 referencedClasses: [],
 //>>excludeEnd("ide");
-messageSends: ["nextPutAll:", ",", "classNameFor:", "theClass", "name"]
+messageSends: ["nextPutAll:", ",", "classNameFor:", "theClass", "printOn:", "name"]
 }),
 $globals.ChunkExporter);
 
@@ -300,7 +297,7 @@ var self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$3,$2,$4,$6,$5,$7,$8,$10,$9,$11;
+var $1,$2,$3,$4,$5,$6,$7,$9,$8,$10;
 $1=self._classNameFor_($recv(aClass)._superclass());
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["classNameFor:"]=1;
@@ -309,18 +306,15 @@ $recv(aStream)._nextPutAll_($1);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["nextPutAll:"]=1;
 //>>excludeEnd("ctx");
-$3=self._classNameFor_(aClass);
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["classNameFor:"]=2;
-//>>excludeEnd("ctx");
-$2=" subclass: #".__comma($3);
+$2=$recv(aStream)._nextPutAll_(" subclass: ");
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx[","]=1;
+$ctx1.sendIdx["nextPutAll:"]=2;
 //>>excludeEnd("ctx");
-$recv(aStream)._nextPutAll_($2);
+$3=self._classNameFor_(aClass);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["nextPutAll:"]=2;
+$ctx1.sendIdx["classNameFor:"]=2;
 //>>excludeEnd("ctx");
+$recv($3)._asSymbolPrintOn_(aStream);
 $recv(aStream)._lf();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["lf"]=1;
@@ -329,90 +323,64 @@ $recv(aStream)._tab();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["tab"]=1;
 //>>excludeEnd("ctx");
-$4=$recv(aStream)._nextPutAll_("instanceVariableNames: '");
+$4=$recv(aStream)._nextPutAll_("instanceVariableNames: ");
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["nextPutAll:"]=3;
 //>>excludeEnd("ctx");
-$recv($recv(aClass)._instanceVariableNames())._do_separatedBy_((function(each){
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx2) {
-//>>excludeEnd("ctx");
-return $recv(aStream)._nextPutAll_(each);
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["nextPutAll:"]=4;
-//>>excludeEnd("ctx");
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
-//>>excludeEnd("ctx");
-}),(function(){
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx2) {
-//>>excludeEnd("ctx");
-return $recv(aStream)._nextPutAll_(" ");
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["nextPutAll:"]=5;
-//>>excludeEnd("ctx");
+$recv(" "._join_($recv(aClass)._instanceVariableNames()))._printOn_(aStream);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
-//>>excludeEnd("ctx");
-}));
-$recv(aStream)._nextPutAll_("'");
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["nextPutAll:"]=6;
+$ctx1.sendIdx["printOn:"]=1;
 //>>excludeEnd("ctx");
 $recv(aStream)._lf();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["lf"]=2;
 //>>excludeEnd("ctx");
 $recv(aStream)._tab();
-$6="package: '".__comma($recv(aClass)._category());
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx[","]=3;
-//>>excludeEnd("ctx");
-$5=$recv($6).__comma("'!");
+$5=$recv(aStream)._nextPutAll_("package: ");
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx[","]=2;
+$ctx1.sendIdx["nextPutAll:"]=4;
 //>>excludeEnd("ctx");
-$recv(aStream)._nextPutAll_($5);
+$recv($recv(aClass)._category())._printOn_(aStream);
+$recv(aStream)._nextPutAll_("!");
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["nextPutAll:"]=7;
+$ctx1.sendIdx["nextPutAll:"]=5;
 //>>excludeEnd("ctx");
-$7=$recv(aStream)._lf();
+$6=$recv(aStream)._lf();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["lf"]=3;
 //>>excludeEnd("ctx");
-$8=$recv(aClass)._comment();
+$7=$recv(aClass)._comment();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["comment"]=1;
 //>>excludeEnd("ctx");
-$recv($8)._ifNotEmpty_((function(){
+$recv($7)._ifNotEmpty_((function(){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx2) {
 //>>excludeEnd("ctx");
-$10="!".__comma(self._classNameFor_(aClass));
+$9="!".__comma(self._classNameFor_(aClass));
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx[","]=5;
+$ctx2.sendIdx[","]=2;
 //>>excludeEnd("ctx");
-$9=$recv($10).__comma(" commentStamp!");
+$8=$recv($9).__comma(" commentStamp!");
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx[","]=4;
+$ctx2.sendIdx[","]=1;
 //>>excludeEnd("ctx");
-$recv(aStream)._nextPutAll_($9);
+$recv(aStream)._nextPutAll_($8);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["nextPutAll:"]=8;
+$ctx2.sendIdx["nextPutAll:"]=6;
 //>>excludeEnd("ctx");
 $recv(aStream)._lf();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["lf"]=4;
 //>>excludeEnd("ctx");
 $recv(aStream)._nextPutAll_($recv(self._chunkEscape_($recv(aClass)._comment())).__comma("!"));
-$11=$recv(aStream)._lf();
+$10=$recv(aStream)._lf();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["lf"]=5;
 //>>excludeEnd("ctx");
-return $11;
+return $10;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
 //>>excludeEnd("ctx");
 }));
 $recv(aStream)._lf();
@@ -423,10 +391,10 @@ return self;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aClass", "aStream"],
-source: "exportDefinitionOf: aClass on: aStream\x0a\x09\x22Chunk format.\x22\x0a\x0a\x09aStream\x0a\x09\x09nextPutAll: (self classNameFor: aClass superclass);\x0a\x09\x09nextPutAll: ' subclass: #', (self classNameFor: aClass); lf;\x0a\x09\x09tab; nextPutAll: 'instanceVariableNames: '''.\x0a\x09aClass instanceVariableNames\x0a\x09\x09do: [ :each | aStream nextPutAll: each ]\x0a\x09\x09separatedBy: [ aStream nextPutAll: ' ' ].\x0a\x09aStream\x0a\x09\x09nextPutAll: ''''; lf;\x0a\x09\x09tab; nextPutAll: 'package: ''', aClass category, '''!'; lf.\x0a\x09aClass comment ifNotEmpty: [\x0a\x09\x09aStream\x0a\x09\x09nextPutAll: '!', (self classNameFor: aClass), ' commentStamp!';lf;\x0a\x09\x09nextPutAll: (self chunkEscape: aClass comment), '!';lf ].\x0a\x09aStream lf",
+source: "exportDefinitionOf: aClass on: aStream\x0a\x09\x22Chunk format.\x22\x0a\x0a\x09aStream\x0a\x09\x09nextPutAll: (self classNameFor: aClass superclass);\x0a\x09\x09nextPutAll: ' subclass: '.\x0a\x09(self classNameFor: aClass) asSymbolPrintOn: aStream.\x0a\x09aStream lf; tab; nextPutAll: 'instanceVariableNames: '.\x0a\x09(' ' join: aClass instanceVariableNames) printOn: aStream.\x0a\x09aStream lf;\x09tab; nextPutAll: 'package: '.\x0a\x09aClass category printOn: aStream.\x0a\x09aStream nextPutAll: '!'; lf.\x0a\x09aClass comment ifNotEmpty: [\x0a\x09\x09aStream\x0a\x09\x09nextPutAll: '!', (self classNameFor: aClass), ' commentStamp!';lf;\x0a\x09\x09nextPutAll: (self chunkEscape: aClass comment), '!';lf ].\x0a\x09aStream lf",
 referencedClasses: [],
 //>>excludeEnd("ide");
-messageSends: ["nextPutAll:", "classNameFor:", "superclass", ",", "lf", "tab", "do:separatedBy:", "instanceVariableNames", "category", "ifNotEmpty:", "comment", "chunkEscape:"]
+messageSends: ["nextPutAll:", "classNameFor:", "superclass", "asSymbolPrintOn:", "lf", "tab", "printOn:", "join:", "instanceVariableNames", "category", "ifNotEmpty:", "comment", ",", "chunkEscape:"]
 }),
 $globals.ChunkExporter);
 
@@ -448,35 +416,13 @@ $recv(aStream)._nextPutAll_(self._classNameFor_($recv(aClass)._theMetaClass()));
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["nextPutAll:"]=1;
 //>>excludeEnd("ctx");
-$1=$recv(aStream)._nextPutAll_(" instanceVariableNames: '");
+$1=$recv(aStream)._nextPutAll_(" instanceVariableNames: ");
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["nextPutAll:"]=2;
 //>>excludeEnd("ctx");
 $1;
-$recv(classIvars)._do_separatedBy_((function(each){
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx3) {
-//>>excludeEnd("ctx");
-return $recv(aStream)._nextPutAll_(each);
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx3.sendIdx["nextPutAll:"]=3;
-//>>excludeEnd("ctx");
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
-//>>excludeEnd("ctx");
-}),(function(){
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx3) {
-//>>excludeEnd("ctx");
-return $recv(aStream)._nextPutAll_(" ");
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx3.sendIdx["nextPutAll:"]=4;
-//>>excludeEnd("ctx");
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
-//>>excludeEnd("ctx");
-}));
-$recv(aStream)._nextPutAll_("'!");
+$recv(" "._join_(classIvars))._printOn_(aStream);
+$recv(aStream)._nextPutAll_("!");
 $recv(aStream)._lf();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["lf"]=1;
@@ -493,10 +439,10 @@ return self;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aClass", "aStream"],
-source: "exportMetaDefinitionOf: aClass on: aStream\x0a\x0a\x09aClass class instanceVariableNames ifNotEmpty: [ :classIvars |\x0a\x09\x09aStream\x0a\x09\x09\x09nextPutAll: (self classNameFor: aClass theMetaClass);\x0a\x09\x09\x09nextPutAll: ' instanceVariableNames: '''.\x0a\x09\x09classIvars\x0a\x09\x09\x09do: [ :each | aStream nextPutAll: each ]\x0a\x09\x09\x09separatedBy: [ aStream nextPutAll: ' ' ].\x0a\x09\x09aStream\x0a\x09\x09\x09nextPutAll: '''!'; lf; lf ]",
+source: "exportMetaDefinitionOf: aClass on: aStream\x0a\x0a\x09aClass class instanceVariableNames ifNotEmpty: [ :classIvars |\x0a\x09\x09aStream\x0a\x09\x09\x09nextPutAll: (self classNameFor: aClass theMetaClass);\x0a\x09\x09\x09nextPutAll: ' instanceVariableNames: '.\x0a\x09\x09(' ' join: classIvars) printOn: aStream.\x0a\x09\x09aStream\x0a\x09\x09\x09nextPutAll: '!'; lf; lf ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
-messageSends: ["ifNotEmpty:", "instanceVariableNames", "class", "nextPutAll:", "classNameFor:", "theMetaClass", "do:separatedBy:", "lf"]
+messageSends: ["ifNotEmpty:", "instanceVariableNames", "class", "nextPutAll:", "classNameFor:", "theMetaClass", "printOn:", "join:", "lf"]
 }),
 $globals.ChunkExporter);
 
@@ -593,12 +539,12 @@ var self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1;
-$1=$recv("Smalltalk createPackage: '".__comma($recv(aPackage)._name())).__comma("'!");
+$recv(aStream)._nextPutAll_("Smalltalk createPackage: ");
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx[","]=1;
+$ctx1.sendIdx["nextPutAll:"]=1;
 //>>excludeEnd("ctx");
-$recv(aStream)._nextPutAll_($1);
+$recv($recv(aPackage)._name())._printOn_(aStream);
+$recv(aStream)._nextPutAll_("!");
 $recv(aStream)._lf();
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
@@ -607,10 +553,10 @@ return self;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aPackage", "aStream"],
-source: "exportPackageDefinitionOf: aPackage on: aStream\x0a\x09aStream\x0a\x09\x09nextPutAll: 'Smalltalk createPackage: ''', aPackage name, '''!';\x0a\x09\x09lf",
+source: "exportPackageDefinitionOf: aPackage on: aStream\x0a\x09aStream\x09nextPutAll: 'Smalltalk createPackage: '.\x0a\x09aPackage name printOn: aStream.\x0a\x09aStream nextPutAll: '!'; lf",
 referencedClasses: [],
 //>>excludeEnd("ide");
-messageSends: ["nextPutAll:", ",", "name", "lf"]
+messageSends: ["nextPutAll:", "printOn:", "name", "lf"]
 }),
 $globals.ChunkExporter);
 
@@ -627,21 +573,18 @@ $recv($recv(aPackage)._imports())._ifNotEmpty_((function(imports){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx2) {
 //>>excludeEnd("ctx");
-$recv(aStream)._nextPutAll_("(Smalltalk packageAt: '");
+$recv(aStream)._nextPutAll_("(Smalltalk packageAt: ");
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["nextPutAll:"]=1;
 //>>excludeEnd("ctx");
-$recv(aStream)._nextPutAll_($recv(aPackage)._name());
+$recv($recv(aPackage)._name())._printOn_(aStream);
+$recv(aStream)._nextPutAll_(") imports: ");
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["nextPutAll:"]=2;
 //>>excludeEnd("ctx");
-$recv(aStream)._nextPutAll_("') imports: ");
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["nextPutAll:"]=3;
-//>>excludeEnd("ctx");
 $recv(aStream)._nextPutAll_(self._chunkEscape_($recv(aPackage)._importsDefinition()));
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["nextPutAll:"]=4;
+$ctx2.sendIdx["nextPutAll:"]=3;
 //>>excludeEnd("ctx");
 $recv(aStream)._nextPutAll_("!");
 return $recv(aStream)._lf();
@@ -656,10 +599,10 @@ return self;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aPackage", "aStream"],
-source: "exportPackageImportsOf: aPackage on: aStream\x0a\x09aPackage imports ifNotEmpty: [ :imports |\x0a\x09\x09aStream\x0a\x09\x09\x09nextPutAll: '(Smalltalk packageAt: ''';\x0a\x09\x09\x09nextPutAll: aPackage name;\x0a\x09\x09\x09nextPutAll: ''') imports: ';\x0a\x09\x09\x09nextPutAll: (self chunkEscape: aPackage importsDefinition);\x0a\x09\x09\x09nextPutAll: '!';\x0a\x09\x09\x09lf ]",
+source: "exportPackageImportsOf: aPackage on: aStream\x0a\x09aPackage imports ifNotEmpty: [ :imports |\x0a\x09\x09aStream nextPutAll: '(Smalltalk packageAt: '.\x0a\x09\x09aPackage name printOn: aStream.\x0a\x09\x09aStream\x0a\x09\x09\x09nextPutAll: ') imports: ';\x0a\x09\x09\x09nextPutAll: (self chunkEscape: aPackage importsDefinition);\x0a\x09\x09\x09nextPutAll: '!';\x0a\x09\x09\x09lf ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
-messageSends: ["ifNotEmpty:", "imports", "nextPutAll:", "name", "chunkEscape:", "importsDefinition", "lf"]
+messageSends: ["ifNotEmpty:", "imports", "nextPutAll:", "printOn:", "name", "chunkEscape:", "importsDefinition", "lf"]
 }),
 $globals.ChunkExporter);
 
@@ -735,20 +678,17 @@ var self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2;
-$1="!".__comma(self._classNameFor_($recv(aProtocol)._theClass()));
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx[","]=1;
-//>>excludeEnd("ctx");
-$recv(aStream)._nextPutAll_($1);
+var $1;
+$recv(aStream)._nextPutAll_("!".__comma(self._classNameFor_($recv(aProtocol)._theClass())));
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["nextPutAll:"]=1;
 //>>excludeEnd("ctx");
-$2=$recv(" methodsFor: '".__comma($recv(aProtocol)._name())).__comma("'!");
+$1=$recv(aStream)._nextPutAll_(" methodsFor: ");
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx[","]=2;
+$ctx1.sendIdx["nextPutAll:"]=2;
 //>>excludeEnd("ctx");
-$recv(aStream)._nextPutAll_($2);
+$recv($recv(aProtocol)._name())._printOn_(aStream);
+$recv(aStream)._nextPutAll_("!");
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"exportProtocolPrologueOf:on:",{aProtocol:aProtocol,aStream:aStream},$globals.ChunkExporter)});
@@ -756,10 +696,10 @@ return self;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aProtocol", "aStream"],
-source: "exportProtocolPrologueOf: aProtocol on: aStream\x0a\x09aStream\x0a\x09\x09nextPutAll: '!', (self classNameFor: aProtocol theClass);\x0a\x09\x09nextPutAll: ' methodsFor: ''', aProtocol name, '''!'",
+source: "exportProtocolPrologueOf: aProtocol on: aStream\x0a\x09aStream\x0a\x09\x09nextPutAll: '!', (self classNameFor: aProtocol theClass);\x0a\x09\x09nextPutAll: ' methodsFor: '.\x0a\x09\x09aProtocol name printOn: aStream.\x0a\x09\x09aStream nextPutAll: '!'",
 referencedClasses: [],
 //>>excludeEnd("ide");
-messageSends: ["nextPutAll:", ",", "classNameFor:", "theClass", "name"]
+messageSends: ["nextPutAll:", ",", "classNameFor:", "theClass", "printOn:", "name"]
 }),
 $globals.ChunkExporter);
 
@@ -804,70 +744,64 @@ var self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $2,$1,$4,$3,$5,$6,$8,$7,$9;
-$2=self._classNameFor_(aClass);
+var $1,$2,$3,$4,$6,$5,$7;
+$recv(aStream)._nextPutAll_("Trait named: ");
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["classNameFor:"]=1;
+$ctx1.sendIdx["nextPutAll:"]=1;
 //>>excludeEnd("ctx");
-$1="Trait named: #".__comma($2);
+$1=self._classNameFor_(aClass);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx[","]=1;
-//>>excludeEnd("ctx");
-$recv(aStream)._nextPutAll_($1);
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["nextPutAll:"]=1;
+$ctx1.sendIdx["classNameFor:"]=1;
 //>>excludeEnd("ctx");
+$recv($1)._asSymbolPrintOn_(aStream);
 $recv(aStream)._lf();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["lf"]=1;
 //>>excludeEnd("ctx");
 $recv(aStream)._tab();
-$4="package: '".__comma($recv(aClass)._category());
+$2=$recv(aStream)._nextPutAll_("package: ");
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx[","]=3;
-//>>excludeEnd("ctx");
-$3=$recv($4).__comma("'!");
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx[","]=2;
+$ctx1.sendIdx["nextPutAll:"]=2;
 //>>excludeEnd("ctx");
-$recv(aStream)._nextPutAll_($3);
+$recv($recv(aClass)._category())._printOn_(aStream);
+$recv(aStream)._nextPutAll_("!");
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["nextPutAll:"]=2;
+$ctx1.sendIdx["nextPutAll:"]=3;
 //>>excludeEnd("ctx");
-$5=$recv(aStream)._lf();
+$3=$recv(aStream)._lf();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["lf"]=2;
 //>>excludeEnd("ctx");
-$6=$recv(aClass)._comment();
+$4=$recv(aClass)._comment();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["comment"]=1;
 //>>excludeEnd("ctx");
-$recv($6)._ifNotEmpty_((function(){
+$recv($4)._ifNotEmpty_((function(){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx2) {
 //>>excludeEnd("ctx");
-$8="!".__comma(self._classNameFor_(aClass));
+$6="!".__comma(self._classNameFor_(aClass));
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx[","]=5;
+$ctx2.sendIdx[","]=2;
 //>>excludeEnd("ctx");
-$7=$recv($8).__comma(" commentStamp!");
+$5=$recv($6).__comma(" commentStamp!");
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx[","]=4;
+$ctx2.sendIdx[","]=1;
 //>>excludeEnd("ctx");
-$recv(aStream)._nextPutAll_($7);
+$recv(aStream)._nextPutAll_($5);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["nextPutAll:"]=3;
+$ctx2.sendIdx["nextPutAll:"]=4;
 //>>excludeEnd("ctx");
 $recv(aStream)._lf();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["lf"]=3;
 //>>excludeEnd("ctx");
 $recv(aStream)._nextPutAll_($recv(self._chunkEscape_($recv(aClass)._comment())).__comma("!"));
-$9=$recv(aStream)._lf();
+$7=$recv(aStream)._lf();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["lf"]=4;
 //>>excludeEnd("ctx");
-return $9;
+return $7;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
 //>>excludeEnd("ctx");
@@ -880,10 +814,10 @@ return self;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aClass", "aStream"],
-source: "exportTraitDefinitionOf: aClass on: aStream\x0a\x09\x22Chunk format.\x22\x0a\x0a\x09aStream\x0a\x09\x09nextPutAll: 'Trait named: #', (self classNameFor: aClass); lf;\x0a\x09\x09tab; nextPutAll: 'package: ''', aClass category, '''!'; lf.\x0a\x09aClass comment ifNotEmpty: [\x0a\x09\x09aStream\x0a\x09\x09nextPutAll: '!', (self classNameFor: aClass), ' commentStamp!';lf;\x0a\x09\x09nextPutAll: (self chunkEscape: aClass comment), '!';lf ].\x0a\x09aStream lf",
+source: "exportTraitDefinitionOf: aClass on: aStream\x0a\x09\x22Chunk format.\x22\x0a\x0a\x09aStream nextPutAll: 'Trait named: '.\x0a\x09(self classNameFor: aClass) asSymbolPrintOn: aStream.\x0a\x09aStream lf; tab; nextPutAll: 'package: '.\x0a\x09aClass category printOn: aStream.\x0a\x09aStream nextPutAll: '!'; lf.\x0a\x09aClass comment ifNotEmpty: [\x0a\x09\x09aStream\x0a\x09\x09nextPutAll: '!', (self classNameFor: aClass), ' commentStamp!';lf;\x0a\x09\x09nextPutAll: (self chunkEscape: aClass comment), '!';lf ].\x0a\x09aStream lf",
 referencedClasses: [],
 //>>excludeEnd("ide");
-messageSends: ["nextPutAll:", ",", "classNameFor:", "lf", "tab", "category", "ifNotEmpty:", "comment", "chunkEscape:"]
+messageSends: ["nextPutAll:", "asSymbolPrintOn:", "classNameFor:", "lf", "tab", "printOn:", "category", "ifNotEmpty:", "comment", ",", "chunkEscape:"]
 }),
 $globals.ChunkExporter);
 
@@ -4229,7 +4163,6 @@ var self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1;
 return $recv($globals.String)._streamContents_((function(stream){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx2) {
@@ -4239,14 +4172,7 @@ $recv(stream)._nextPutAll_($recv(self._class())._name());
 $ctx2.sendIdx["nextPutAll:"]=1;
 //>>excludeEnd("ctx");
 $recv(stream)._nextPutAll_(" namespace: ");
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["nextPutAll:"]=2;
-//>>excludeEnd("ctx");
-$1=$recv("'".__comma(self._namespace())).__comma("'");
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx[","]=1;
-//>>excludeEnd("ctx");
-return $recv(stream)._nextPutAll_($1);
+return $recv(self._namespace())._printOn_(stream);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)});
 //>>excludeEnd("ctx");
@@ -4257,10 +4183,10 @@ return $recv(stream)._nextPutAll_($1);
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
-source: "definition\x0a\x09^ String streamContents: [ :stream |\x0a\x09\x09stream \x0a\x09\x09\x09nextPutAll: self class name;\x0a\x09\x09\x09nextPutAll: ' namespace: ';\x0a\x09\x09\x09nextPutAll: '''', self namespace, '''' ]",
+source: "definition\x0a\x09^ String streamContents: [ :stream |\x0a\x09\x09stream \x0a\x09\x09\x09nextPutAll: self class name;\x0a\x09\x09\x09nextPutAll: ' namespace: '.\x0a\x09\x09self namespace printOn: stream ]",
 referencedClasses: ["String"],
 //>>excludeEnd("ide");
-messageSends: ["streamContents:", "nextPutAll:", "name", "class", ",", "namespace"]
+messageSends: ["streamContents:", "nextPutAll:", "name", "class", "printOn:", "namespace"]
 }),
 $globals.AmdPackageTransport);
 

+ 29 - 26
src/Platform-ImportExport.st

@@ -135,7 +135,9 @@ exportCategoryEpilogueOf: aCategory on: aStream
 exportCategoryPrologueOf: aCategory on: aStream
 	aStream
 		nextPutAll: '!!', (self classNameFor: aCategory theClass);
-		nextPutAll: ' methodsFor: ''', aCategory name, '''!!'
+		nextPutAll: ' methodsFor: '.
+	aCategory name printOn: aStream.
+	aStream nextPutAll: '!!'
 !
 
 exportDefinitionOf: aClass on: aStream
@@ -143,14 +145,13 @@ exportDefinitionOf: aClass on: aStream
 
 	aStream
 		nextPutAll: (self classNameFor: aClass superclass);
-		nextPutAll: ' subclass: #', (self classNameFor: aClass); lf;
-		tab; nextPutAll: 'instanceVariableNames: '''.
-	aClass instanceVariableNames
-		do: [ :each | aStream nextPutAll: each ]
-		separatedBy: [ aStream nextPutAll: ' ' ].
-	aStream
-		nextPutAll: ''''; lf;
-		tab; nextPutAll: 'package: ''', aClass category, '''!!'; lf.
+		nextPutAll: ' subclass: '.
+	(self classNameFor: aClass) asSymbolPrintOn: aStream.
+	aStream lf; tab; nextPutAll: 'instanceVariableNames: '.
+	(' ' join: aClass instanceVariableNames) printOn: aStream.
+	aStream lf;	tab; nextPutAll: 'package: '.
+	aClass category printOn: aStream.
+	aStream nextPutAll: '!!'; lf.
 	aClass comment ifNotEmpty: [
 		aStream
 		nextPutAll: '!!', (self classNameFor: aClass), ' commentStamp!!';lf;
@@ -163,12 +164,10 @@ exportMetaDefinitionOf: aClass on: aStream
 	aClass class instanceVariableNames ifNotEmpty: [ :classIvars |
 		aStream
 			nextPutAll: (self classNameFor: aClass theMetaClass);
-			nextPutAll: ' instanceVariableNames: '''.
-		classIvars
-			do: [ :each | aStream nextPutAll: each ]
-			separatedBy: [ aStream nextPutAll: ' ' ].
+			nextPutAll: ' instanceVariableNames: '.
+		(' ' join: classIvars) printOn: aStream.
 		aStream
-			nextPutAll: '''!!'; lf; lf ]
+			nextPutAll: '!!'; lf; lf ]
 !
 
 exportMethod: aMethod on: aStream
@@ -193,17 +192,17 @@ exportPackage: aPackage on: aStream
 !
 
 exportPackageDefinitionOf: aPackage on: aStream
-	aStream
-		nextPutAll: 'Smalltalk createPackage: ''', aPackage name, '''!!';
-		lf
+	aStream	nextPutAll: 'Smalltalk createPackage: '.
+	aPackage name printOn: aStream.
+	aStream nextPutAll: '!!'; lf
 !
 
 exportPackageImportsOf: aPackage on: aStream
 	aPackage imports ifNotEmpty: [ :imports |
+		aStream nextPutAll: '(Smalltalk packageAt: '.
+		aPackage name printOn: aStream.
 		aStream
-			nextPutAll: '(Smalltalk packageAt: ''';
-			nextPutAll: aPackage name;
-			nextPutAll: ''') imports: ';
+			nextPutAll: ') imports: ';
 			nextPutAll: (self chunkEscape: aPackage importsDefinition);
 			nextPutAll: '!!';
 			lf ]
@@ -223,7 +222,9 @@ exportProtocolEpilogueOf: aProtocol on: aStream
 exportProtocolPrologueOf: aProtocol on: aStream
 	aStream
 		nextPutAll: '!!', (self classNameFor: aProtocol theClass);
-		nextPutAll: ' methodsFor: ''', aProtocol name, '''!!'
+		nextPutAll: ' methodsFor: '.
+		aProtocol name printOn: aStream.
+		aStream nextPutAll: '!!'
 !
 
 exportProtocols: aCollection on: aStream
@@ -234,9 +235,11 @@ exportProtocols: aCollection on: aStream
 exportTraitDefinitionOf: aClass on: aStream
 	"Chunk format."
 
-	aStream
-		nextPutAll: 'Trait named: #', (self classNameFor: aClass); lf;
-		tab; nextPutAll: 'package: ''', aClass category, '''!!'; lf.
+	aStream nextPutAll: 'Trait named: '.
+	(self classNameFor: aClass) asSymbolPrintOn: aStream.
+	aStream lf; tab; nextPutAll: 'package: '.
+	aClass category printOn: aStream.
+	aStream nextPutAll: '!!'; lf.
 	aClass comment ifNotEmpty: [
 		aStream
 		nextPutAll: '!!', (self classNameFor: aClass), ' commentStamp!!';lf;
@@ -1036,8 +1039,8 @@ definition
 	^ String streamContents: [ :stream |
 		stream 
 			nextPutAll: self class name;
-			nextPutAll: ' namespace: ';
-			nextPutAll: '''', self namespace, '''' ]
+			nextPutAll: ' namespace: '.
+		self namespace printOn: stream ]
 !
 
 namespace