Browse Source

Use ifEmpty:ifNotEmpty: family.

Herbert Vojčík 7 years ago
parent
commit
c273a7db26

+ 77 - 47
external/amber-cli/src/AmberCli.js

@@ -188,7 +188,9 @@ var args,packageJSON;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-var $7,$6,$5,$4,$3,$2,$1,$8;
+var $7,$6,$5,$4,$3,$2,$1;
+var $early={};
+try {
 packageJSON=$recv(require)._value_("../package.json");
 packageJSON=$recv(require)._value_("../package.json");
 $7=$recv(packageJSON)._version();
 $7=$recv(packageJSON)._version();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
@@ -218,23 +220,36 @@ $ctx1.sendIdx[","]=1;
 $recv($globals.Transcript)._show_($1);
 $recv($globals.Transcript)._show_($1);
 args=$recv(process)._argv();
 args=$recv(process)._argv();
 $recv(args)._removeFrom_to_((1),(2));
 $recv(args)._removeFrom_to_((1),(2));
-$8=$recv(args)._isEmpty();
-if($core.assert($8)){
-self._help_(nil);
-} else {
-return self._handleArguments_(args);
-};
+$recv(args)._ifEmpty_ifNotEmpty_((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
+return self._help_(nil);
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
+//>>excludeEnd("ctx");
+}),(function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
+throw $early=[self._handleArguments_(args)];
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
+//>>excludeEnd("ctx");
+}));
 return self;
 return self;
+}
+catch(e) {if(e===$early)return e[0]; throw e}
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"main",{args:args,packageJSON:packageJSON},$globals.AmberCli.klass)});
 }, function($ctx1) {$ctx1.fill(self,"main",{args:args,packageJSON:packageJSON},$globals.AmberCli.klass)});
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 },
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
-source: "main\x0a\x09\x22Main entry point for Amber applications.\x0a\x09Parses commandline arguments and starts the according subprogram.\x22\x0a\x09| args packageJSON |\x0a\x09\x0a\x09packageJSON := require value: '../package.json'.\x0a\x09Transcript show: 'Welcome to Amber CLI version ', packageJSON version, ' (Amber ', Smalltalk version, ', NodeJS ', process versions node, ').'.\x0a\x0a\x09args := process argv.\x0a\x09\x22Remove the first args which contain the path to the node executable and the script file.\x22\x0a\x09args removeFrom: 1 to: 2.\x0a\x09\x0a\x09(args isEmpty)\x0a\x09\x09ifTrue: [self help: nil]\x0a\x09\x09ifFalse: [^self handleArguments: args]",
+source: "main\x0a\x09\x22Main entry point for Amber applications.\x0a\x09Parses commandline arguments and starts the according subprogram.\x22\x0a\x09| args packageJSON |\x0a\x09\x0a\x09packageJSON := require value: '../package.json'.\x0a\x09Transcript show: 'Welcome to Amber CLI version ', packageJSON version, ' (Amber ', Smalltalk version, ', NodeJS ', process versions node, ').'.\x0a\x0a\x09args := process argv.\x0a\x09\x22Remove the first args which contain the path to the node executable and the script file.\x22\x0a\x09args removeFrom: 1 to: 2.\x0a\x09\x0a\x09args\x0a\x09\x09ifEmpty: [self help: nil]\x0a\x09\x09ifNotEmpty: [^self handleArguments: args]",
 referencedClasses: ["Transcript", "Smalltalk"],
 referencedClasses: ["Transcript", "Smalltalk"],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
-messageSends: ["value:", "show:", ",", "version", "node", "versions", "argv", "removeFrom:to:", "ifTrue:ifFalse:", "isEmpty", "help:", "handleArguments:"]
+messageSends: ["value:", "show:", ",", "version", "node", "versions", "argv", "removeFrom:to:", "ifEmpty:ifNotEmpty:", "help:", "handleArguments:"]
 }),
 }),
 $globals.AmberCli.klass);
 $globals.AmberCli.klass);
 
 
@@ -999,7 +1014,9 @@ var header,token,auth,parts;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-var $2,$1,$3,$4,$5,$6,$9,$10,$8,$7,$receiver;
+var $2,$1,$3,$4,$5,$8,$9,$7,$6,$receiver;
+var $early={};
+try {
 $2=$recv(self["@username"])._isNil();
 $2=$recv(self["@username"])._isNil();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["isNil"]=1;
 $ctx1.sendIdx["isNil"]=1;
@@ -1028,63 +1045,71 @@ header="";
 } else {
 } else {
 header=$3;
 header=$3;
 };
 };
-$4=$recv(header)._isEmpty();
-if($core.assert($4)){
-return false;
-} else {
-$5=$recv(header)._tokenize_(" ");
+$recv(header)._ifEmpty_ifNotEmpty_((function(){
+throw $early=[false];
+
+}),(function(){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["tokenize:"]=1;
+return $core.withContext(function($ctx2) {
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-if(($receiver = $5) == null || $receiver.isNil){
+$4=$recv(header)._tokenize_(" ");
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx2.sendIdx["tokenize:"]=1;
+//>>excludeEnd("ctx");
+if(($receiver = $4) == null || $receiver.isNil){
 token="";
 token="";
 } else {
 } else {
-token=$5;
+token=$4;
 };
 };
 token;
 token;
-$6=$recv(token)._at_((2));
+$5=$recv(token)._at_((2));
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["at:"]=2;
+$ctx2.sendIdx["at:"]=2;
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-auth=self._base64Decode_($6);
+auth=self._base64Decode_($5);
 auth;
 auth;
 parts=$recv(auth)._tokenize_(":");
 parts=$recv(auth)._tokenize_(":");
 parts;
 parts;
-$9=self["@username"];
-$10=$recv(parts)._at_((1));
+$8=self["@username"];
+$9=$recv(parts)._at_((1));
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["at:"]=3;
+$ctx2.sendIdx["at:"]=3;
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-$8=$recv($9).__eq($10);
+$7=$recv($8).__eq($9);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["="]=1;
+$ctx2.sendIdx["="]=1;
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-$7=$recv($8)._and_((function(){
+$6=$recv($7)._and_((function(){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx2) {
+return $core.withContext(function($ctx3) {
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 return $recv(self["@password"]).__eq($recv(parts)._at_((2)));
 return $recv(self["@password"]).__eq($recv(parts)._at_((2)));
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,7)});
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2,7)});
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 }));
 }));
-if($core.assert($7)){
-return true;
+if($core.assert($6)){
+throw $early=[true];
 } else {
 } else {
-return false;
-};
+throw $early=[false];
 };
 };
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,5)});
+//>>excludeEnd("ctx");
+}));
 return self;
 return self;
+}
+catch(e) {if(e===$early)return e[0]; throw e}
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"isAuthenticated:",{aRequest:aRequest,header:header,token:token,auth:auth,parts:parts},$globals.FileServer)});
 }, function($ctx1) {$ctx1.fill(self,"isAuthenticated:",{aRequest:aRequest,header:header,token:token,auth:auth,parts:parts},$globals.FileServer)});
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 },
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aRequest"],
 args: ["aRequest"],
-source: "isAuthenticated: aRequest\x0a\x09\x22Basic HTTP Auth: http://stackoverflow.com/a/5957629/293175\x0a\x09 and https://gist.github.com/1686663\x22\x0a\x09| header token auth parts|\x0a\x0a\x09(username isNil and: [password isNil]) ifTrue: [^ true].\x0a\x0a\x09\x22get authentication header\x22\x0a\x09header := (aRequest headers at: 'authorization') ifNil:[''].\x0a\x09(header isEmpty)\x0a\x09ifTrue: [^ false]\x0a\x09ifFalse: [\x0a\x09\x09\x22get authentication token\x22\x0a\x09\x09token := (header tokenize: ' ') ifNil:[''].\x0a\x09\x09\x22convert back from base64\x22\x0a\x09\x09auth := self base64Decode: (token at: 2).\x0a\x09\x09\x22split token at colon\x22\x0a\x09\x09parts := auth tokenize: ':'.\x0a\x0a\x09\x09((username = (parts at: 1)) and: [password = (parts at: 2)])\x0a\x09\x09\x09ifTrue: [^ true]\x0a\x09\x09\x09ifFalse: [^ false]\x0a\x09].",
+source: "isAuthenticated: aRequest\x0a\x09\x22Basic HTTP Auth: http://stackoverflow.com/a/5957629/293175\x0a\x09 and https://gist.github.com/1686663\x22\x0a\x09| header token auth parts|\x0a\x0a\x09(username isNil and: [password isNil]) ifTrue: [^ true].\x0a\x0a\x09\x22get authentication header\x22\x0a\x09header := (aRequest headers at: 'authorization') ifNil:[''].\x0a\x09header\x0a\x09ifEmpty: [^ false]\x0a\x09ifNotEmpty: [\x0a\x09\x09\x22get authentication token\x22\x0a\x09\x09token := (header tokenize: ' ') ifNil:[''].\x0a\x09\x09\x22convert back from base64\x22\x0a\x09\x09auth := self base64Decode: (token at: 2).\x0a\x09\x09\x22split token at colon\x22\x0a\x09\x09parts := auth tokenize: ':'.\x0a\x0a\x09\x09((username = (parts at: 1)) and: [password = (parts at: 2)])\x0a\x09\x09\x09ifTrue: [^ true]\x0a\x09\x09\x09ifFalse: [^ false]\x0a\x09].",
 referencedClasses: [],
 referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
-messageSends: ["ifTrue:", "and:", "isNil", "ifNil:", "at:", "headers", "ifTrue:ifFalse:", "isEmpty", "tokenize:", "base64Decode:", "="]
+messageSends: ["ifTrue:", "and:", "isNil", "ifNil:", "at:", "headers", "ifEmpty:ifNotEmpty:", "tokenize:", "base64Decode:", "ifTrue:ifFalse:", "="]
 }),
 }),
 $globals.FileServer);
 $globals.FileServer);
 
 
@@ -2860,33 +2885,38 @@ var result;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-var $1,$2;
-$1=$recv(buffer)._isEmpty();
-if(!$core.assert($1)){
-$recv((function(){
+var $1;
+$recv(buffer)._ifNotEmpty_((function(){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx2) {
 return $core.withContext(function($ctx2) {
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
+return $recv((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx3) {
+//>>excludeEnd("ctx");
 result=$recv($recv($globals.Compiler)._new())._evaluateExpression_on_(buffer,anObject);
 result=$recv($recv($globals.Compiler)._new())._evaluateExpression_on_(buffer,anObject);
 return result;
 return result;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 }))._tryCatch_((function(e){
 }))._tryCatch_((function(e){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx2) {
+return $core.withContext(function($ctx3) {
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-$2=$recv(e)._isSmalltalkError();
-if($core.assert($2)){
+$1=$recv(e)._isSmalltalkError();
+if($core.assert($1)){
 return $recv(e)._resignal();
 return $recv(e)._resignal();
 } else {
 } else {
 return $recv($recv(process)._stdout())._write_($recv(e)._jsStack());
 return $recv($recv(process)._stdout())._write_($recv(e)._jsStack());
 };
 };
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx2) {$ctx2.fillBlock({e:e},$ctx1,3)});
+}, function($ctx3) {$ctx3.fillBlock({e:e},$ctx2,3)});
+//>>excludeEnd("ctx");
+}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 }));
 }));
-};
 return result;
 return result;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"eval:on:",{buffer:buffer,anObject:anObject,result:result},$globals.Repl)});
 }, function($ctx1) {$ctx1.fill(self,"eval:on:",{buffer:buffer,anObject:anObject,result:result},$globals.Repl)});
@@ -2894,10 +2924,10 @@ return result;
 },
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["buffer", "anObject"],
 args: ["buffer", "anObject"],
-source: "eval: buffer on: anObject\x0a\x09| result |\x0a\x09buffer isEmpty ifFalse: [\x0a\x09\x09[result := Compiler new evaluateExpression: buffer on: anObject]\x0a\x09\x09\x09tryCatch: [:e |\x0a\x09\x09\x09\x09e isSmalltalkError\x0a\x09\x09\x09\x09    ifTrue: [ e resignal ]\x0a\x09\x09\x09 \x09   ifFalse: [ process stdout write: e jsStack ]]].\x0a\x09^ result",
+source: "eval: buffer on: anObject\x0a\x09| result |\x0a\x09buffer ifNotEmpty: [\x0a\x09\x09[result := Compiler new evaluateExpression: buffer on: anObject]\x0a\x09\x09\x09tryCatch: [:e |\x0a\x09\x09\x09\x09e isSmalltalkError\x0a\x09\x09\x09\x09\x09ifTrue: [ e resignal ]\x0a\x09\x09\x09\x09\x09ifFalse: [ process stdout write: e jsStack ]]].\x0a\x09^ result",
 referencedClasses: ["Compiler"],
 referencedClasses: ["Compiler"],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
-messageSends: ["ifFalse:", "isEmpty", "tryCatch:", "evaluateExpression:on:", "new", "ifTrue:ifFalse:", "isSmalltalkError", "resignal", "write:", "stdout", "jsStack"]
+messageSends: ["ifNotEmpty:", "tryCatch:", "evaluateExpression:on:", "new", "ifTrue:ifFalse:", "isSmalltalkError", "resignal", "write:", "stdout", "jsStack"]
 }),
 }),
 $globals.Repl);
 $globals.Repl);
 
 

+ 9 - 9
external/amber-cli/src/AmberCli.st

@@ -93,9 +93,9 @@ main
 	"Remove the first args which contain the path to the node executable and the script file."
 	"Remove the first args which contain the path to the node executable and the script file."
 	args removeFrom: 1 to: 2.
 	args removeFrom: 1 to: 2.
 	
 	
-	(args isEmpty)
-		ifTrue: [self help: nil]
-		ifFalse: [^self handleArguments: args]
+	args
+		ifEmpty: [self help: nil]
+		ifNotEmpty: [^self handleArguments: args]
 ! !
 ! !
 
 
 Object subclass: #BaseFileManipulator
 Object subclass: #BaseFileManipulator
@@ -257,9 +257,9 @@ isAuthenticated: aRequest
 
 
 	"get authentication header"
 	"get authentication header"
 	header := (aRequest headers at: 'authorization') ifNil:[''].
 	header := (aRequest headers at: 'authorization') ifNil:[''].
-	(header isEmpty)
-	ifTrue: [^ false]
-	ifFalse: [
+	header
+	ifEmpty: [^ false]
+	ifNotEmpty: [
 		"get authentication token"
 		"get authentication token"
 		token := (header tokenize: ' ') ifNil:[''].
 		token := (header tokenize: ' ') ifNil:[''].
 		"convert back from base64"
 		"convert back from base64"
@@ -1136,12 +1136,12 @@ eval: buffer
 
 
 eval: buffer on: anObject
 eval: buffer on: anObject
 	| result |
 	| result |
-	buffer isEmpty ifFalse: [
+	buffer ifNotEmpty: [
 		[result := Compiler new evaluateExpression: buffer on: anObject]
 		[result := Compiler new evaluateExpression: buffer on: anObject]
 			tryCatch: [:e |
 			tryCatch: [:e |
 				e isSmalltalkError
 				e isSmalltalkError
-				    ifTrue: [ e resignal ]
-			 	   ifFalse: [ process stdout write: e jsStack ]]].
+					ifTrue: [ e resignal ]
+					ifFalse: [ process stdout write: e jsStack ]]].
 	^ result
 	^ result
 !
 !
 
 

+ 16 - 15
src/Compiler-IR.js

@@ -3855,7 +3855,7 @@ var self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-var $1,$2,$3,$4,$5,$7,$6,$8,$9;
+var $1,$2,$3,$4,$5,$6,$7;
 $1=self._stream();
 $1=self._stream();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["stream"]=1;
 $ctx1.sendIdx["stream"]=1;
@@ -3900,28 +3900,29 @@ return $recv($5)._nextPutContextFor_during_(anIRMethod,(function(){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx4) {
 return $core.withContext(function($ctx4) {
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-$7=$recv(anIRMethod)._internalVariables();
+$recv($recv(anIRMethod)._internalVariables())._ifNotEmpty_((function(internalVars){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx4.sendIdx["internalVariables"]=1;
+return $core.withContext(function($ctx5) {
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-$6=$recv($7)._notEmpty();
-if($core.assert($6)){
-$8=self._stream();
+$6=self._stream();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx4.sendIdx["stream"]=5;
+$ctx5.sendIdx["stream"]=5;
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-$recv($8)._nextPutVars_($recv($recv($recv(anIRMethod)._internalVariables())._asSet())._collect_((function(each){
+return $recv($6)._nextPutVars_($recv($recv(internalVars)._asSet())._collect_((function(each){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx5) {
+return $core.withContext(function($ctx6) {
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 return $recv($recv(each)._variable())._alias();
 return $recv($recv(each)._variable())._alias();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx5) {$ctx5.fillBlock({each:each},$ctx4,6)});
+}, function($ctx6) {$ctx6.fillBlock({each:each},$ctx5,6)});
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 })));
 })));
-};
-$9=$recv($recv(anIRMethod)._scope())._hasNonLocalReturn();
-if($core.assert($9)){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx5) {$ctx5.fillBlock({internalVars:internalVars},$ctx4,5)});
+//>>excludeEnd("ctx");
+}));
+$7=$recv($recv(anIRMethod)._scope())._hasNonLocalReturn();
+if($core.assert($7)){
 return $recv(self._stream())._nextPutNonLocalReturnHandlingWith_((function(){
 return $recv(self._stream())._nextPutNonLocalReturnHandlingWith_((function(){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx5) {
 return $core.withContext(function($ctx5) {
@@ -3970,10 +3971,10 @@ return self;
 },
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["anIRMethod"],
 args: ["anIRMethod"],
-source: "visitIRMethod: anIRMethod\x0a\x0a\x09self stream\x0a\x09\x09nextPutMethodDeclaration: anIRMethod\x0a\x09\x09with: [ self stream\x0a\x09\x09\x09nextPutFunctionWith: [\x0a\x09\x09\x09\x09self stream nextPutVars: (anIRMethod tempDeclarations collect: [ :each |\x0a\x09\x09\x09\x09\x09each name asVariableName ]).\x0a\x09\x09\x09\x09self stream nextPutContextFor: anIRMethod during: [\x0a\x09\x09\x09\x09anIRMethod internalVariables notEmpty ifTrue: [\x0a\x09\x09\x09\x09\x09self stream nextPutVars: (anIRMethod internalVariables asSet collect: [ :each |\x0a\x09\x09\x09\x09\x09\x09each variable alias ]) ].\x0a\x09\x09\x09\x09anIRMethod scope hasNonLocalReturn\x0a\x09\x09\x09\x09\x09ifTrue: [\x0a\x09\x09\x09\x09\x09\x09self stream nextPutNonLocalReturnHandlingWith: [\x0a\x09\x09\x09\x09\x09\x09\x09super visitIRMethod: anIRMethod ] ]\x0a\x09\x09\x09\x09\x09ifFalse: [ super visitIRMethod: anIRMethod ] ]]\x0a\x09\x09\x09arguments: anIRMethod arguments ]",
+source: "visitIRMethod: anIRMethod\x0a\x0a\x09self stream\x0a\x09\x09nextPutMethodDeclaration: anIRMethod\x0a\x09\x09with: [ self stream\x0a\x09\x09\x09nextPutFunctionWith: [\x0a\x09\x09\x09\x09self stream nextPutVars: (anIRMethod tempDeclarations collect: [ :each |\x0a\x09\x09\x09\x09\x09each name asVariableName ]).\x0a\x09\x09\x09\x09self stream nextPutContextFor: anIRMethod during: [\x0a\x09\x09\x09\x09\x09anIRMethod internalVariables ifNotEmpty: [ :internalVars |\x0a\x09\x09\x09\x09\x09\x09self stream nextPutVars: \x0a\x09\x09\x09\x09\x09\x09\x09(internalVars asSet collect: [ :each | each variable alias ]) ].\x0a\x09\x09\x09\x09anIRMethod scope hasNonLocalReturn\x0a\x09\x09\x09\x09\x09ifTrue: [\x0a\x09\x09\x09\x09\x09\x09self stream nextPutNonLocalReturnHandlingWith: [\x0a\x09\x09\x09\x09\x09\x09\x09super visitIRMethod: anIRMethod ] ]\x0a\x09\x09\x09\x09\x09ifFalse: [ super visitIRMethod: anIRMethod ] ]]\x0a\x09\x09\x09arguments: anIRMethod arguments ]",
 referencedClasses: [],
 referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
-messageSends: ["nextPutMethodDeclaration:with:", "stream", "nextPutFunctionWith:arguments:", "nextPutVars:", "collect:", "tempDeclarations", "asVariableName", "name", "nextPutContextFor:during:", "ifTrue:", "notEmpty", "internalVariables", "asSet", "alias", "variable", "ifTrue:ifFalse:", "hasNonLocalReturn", "scope", "nextPutNonLocalReturnHandlingWith:", "visitIRMethod:", "arguments"]
+messageSends: ["nextPutMethodDeclaration:with:", "stream", "nextPutFunctionWith:arguments:", "nextPutVars:", "collect:", "tempDeclarations", "asVariableName", "name", "nextPutContextFor:during:", "ifNotEmpty:", "internalVariables", "asSet", "alias", "variable", "ifTrue:ifFalse:", "hasNonLocalReturn", "scope", "nextPutNonLocalReturnHandlingWith:", "visitIRMethod:", "arguments"]
 }),
 }),
 $globals.IRJSTranslator);
 $globals.IRJSTranslator);
 
 

+ 3 - 3
src/Compiler-IR.st

@@ -961,9 +961,9 @@ visitIRMethod: anIRMethod
 				self stream nextPutVars: (anIRMethod tempDeclarations collect: [ :each |
 				self stream nextPutVars: (anIRMethod tempDeclarations collect: [ :each |
 					each name asVariableName ]).
 					each name asVariableName ]).
 				self stream nextPutContextFor: anIRMethod during: [
 				self stream nextPutContextFor: anIRMethod during: [
-				anIRMethod internalVariables notEmpty ifTrue: [
-					self stream nextPutVars: (anIRMethod internalVariables asSet collect: [ :each |
-						each variable alias ]) ].
+					anIRMethod internalVariables ifNotEmpty: [ :internalVars |
+						self stream nextPutVars: 
+							(internalVars asSet collect: [ :each | each variable alias ]) ].
 				anIRMethod scope hasNonLocalReturn
 				anIRMethod scope hasNonLocalReturn
 					ifTrue: [
 					ifTrue: [
 						self stream nextPutNonLocalReturnHandlingWith: [
 						self stream nextPutNonLocalReturnHandlingWith: [

+ 22 - 15
src/Kernel-Collections.js

@@ -6270,23 +6270,25 @@ var self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-var $1;
-$1=self._isEmpty();
-if($core.assert($1)){
-return self;
-} else {
+return self._ifNotEmpty_((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
 return $recv($recv(self._first())._asUppercase()).__comma(self._allButFirst());
 return $recv($recv(self._first())._asUppercase()).__comma(self._allButFirst());
-};
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
+//>>excludeEnd("ctx");
+}));
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"capitalized",{},$globals.String)});
 }, function($ctx1) {$ctx1.fill(self,"capitalized",{},$globals.String)});
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 },
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
-source: "capitalized\x0a\x09^ self isEmpty\x0a\x09\x09ifTrue: [ self ]\x0a\x09\x09ifFalse: [ self first asUppercase, self allButFirst ]",
+source: "capitalized\x0a\x09^ self ifNotEmpty: [ self first asUppercase, self allButFirst ]",
 referencedClasses: [],
 referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
-messageSends: ["ifTrue:ifFalse:", "isEmpty", ",", "asUppercase", "first", "allButFirst"]
+messageSends: ["ifNotEmpty:", ",", "asUppercase", "first", "allButFirst"]
 }),
 }),
 $globals.String);
 $globals.String);
 
 
@@ -9827,24 +9829,29 @@ var result;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-var $1,$2;
+var $1;
 var $early={};
 var $early={};
 try {
 try {
 result=$recv(self["@read"])._at_ifAbsent_(self["@readIndex"],(function(){
 result=$recv(self["@read"])._at_ifAbsent_(self["@readIndex"],(function(){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx2) {
 return $core.withContext(function($ctx2) {
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-$1=$recv(self["@write"])._isEmpty();
+$recv(self["@write"])._ifEmpty_((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx3) {
+//>>excludeEnd("ctx");
+$1=$recv(self["@readIndex"]).__gt((1));
 if($core.assert($1)){
 if($core.assert($1)){
-$2=$recv(self["@readIndex"]).__gt((1));
-if($core.assert($2)){
 self["@read"]=[];
 self["@read"]=[];
 self["@read"];
 self["@read"];
 self["@readIndex"]=(1);
 self["@readIndex"]=(1);
 self["@readIndex"];
 self["@readIndex"];
 };
 };
 throw $early=[$recv(aBlock)._value()];
 throw $early=[$recv(aBlock)._value()];
-};
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
+//>>excludeEnd("ctx");
+}));
 self["@read"]=self["@write"];
 self["@read"]=self["@write"];
 self["@read"];
 self["@read"];
 self["@readIndex"]=(1);
 self["@readIndex"]=(1);
@@ -9867,10 +9874,10 @@ catch(e) {if(e===$early)return e[0]; throw e}
 },
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aBlock"],
 args: ["aBlock"],
-source: "nextIfAbsent: aBlock\x0a\x09| result |\x0a\x09result := read at: readIndex ifAbsent: [\x0a\x09\x09write isEmpty ifTrue: [\x0a\x09\x09\x09readIndex > 1 ifTrue: [ read := #(). readIndex := 1 ].\x0a\x09\x09\x09^ aBlock value ].\x0a\x09\x09read := write.\x0a\x09\x09readIndex := 1.\x0a\x09\x09write := OrderedCollection new.\x0a\x09\x09read first ].\x0a\x09read at: readIndex put: nil.\x0a\x09readIndex := readIndex + 1.\x0a\x09^ result",
+source: "nextIfAbsent: aBlock\x0a\x09| result |\x0a\x09result := read at: readIndex ifAbsent: [\x0a\x09\x09write ifEmpty: [\x0a\x09\x09\x09readIndex > 1 ifTrue: [ read := #(). readIndex := 1 ].\x0a\x09\x09\x09^ aBlock value ].\x0a\x09\x09read := write.\x0a\x09\x09readIndex := 1.\x0a\x09\x09write := OrderedCollection new.\x0a\x09\x09read first ].\x0a\x09read at: readIndex put: nil.\x0a\x09readIndex := readIndex + 1.\x0a\x09^ result",
 referencedClasses: ["OrderedCollection"],
 referencedClasses: ["OrderedCollection"],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
-messageSends: ["at:ifAbsent:", "ifTrue:", "isEmpty", ">", "value", "new", "first", "at:put:", "+"]
+messageSends: ["at:ifAbsent:", "ifEmpty:", "ifTrue:", ">", "value", "new", "first", "at:put:", "+"]
 }),
 }),
 $globals.Queue);
 $globals.Queue);
 
 

+ 2 - 4
src/Kernel-Collections.st

@@ -1540,9 +1540,7 @@ asUppercase
 !
 !
 
 
 capitalized
 capitalized
-	^ self isEmpty
-		ifTrue: [ self ]
-		ifFalse: [ self first asUppercase, self allButFirst ]
+	^ self ifNotEmpty: [ self first asUppercase, self allButFirst ]
 !
 !
 
 
 crlfSanitized
 crlfSanitized
@@ -2350,7 +2348,7 @@ next
 nextIfAbsent: aBlock
 nextIfAbsent: aBlock
 	| result |
 	| result |
 	result := read at: readIndex ifAbsent: [
 	result := read at: readIndex ifAbsent: [
-		write isEmpty ifTrue: [
+		write ifEmpty: [
 			readIndex > 1 ifTrue: [ read := #(). readIndex := 1 ].
 			readIndex > 1 ifTrue: [ read := #(). readIndex := 1 ].
 			^ aBlock value ].
 			^ aBlock value ].
 		read := write.
 		read := write.

+ 123 - 109
src/Platform-ImportExport.js

@@ -275,7 +275,7 @@ var self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-var $1,$3,$2,$4,$6,$5,$7,$9,$8,$11,$10,$12;
+var $1,$3,$2,$4,$6,$5,$7,$8,$10,$9,$11;
 $1=self._classNameFor_($recv(aClass)._superclass());
 $1=self._classNameFor_($recv(aClass)._superclass());
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["classNameFor:"]=1;
 $ctx1.sendIdx["classNameFor:"]=1;
@@ -356,35 +356,40 @@ $7=$recv(aStream)._lf();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["lf"]=3;
 $ctx1.sendIdx["lf"]=3;
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-$9=$recv(aClass)._comment();
+$8=$recv(aClass)._comment();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["comment"]=1;
 $ctx1.sendIdx["comment"]=1;
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-$8=$recv($9)._notEmpty();
-if($core.assert($8)){
-$11="!".__comma(self._classNameFor_(aClass));
+$recv($8)._ifNotEmpty_((function(){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx[","]=5;
+return $core.withContext(function($ctx2) {
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-$10=$recv($11).__comma(" commentStamp!");
+$10="!".__comma(self._classNameFor_(aClass));
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx[","]=4;
+$ctx2.sendIdx[","]=5;
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-$recv(aStream)._nextPutAll_($10);
+$9=$recv($10).__comma(" commentStamp!");
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["nextPutAll:"]=8;
+$ctx2.sendIdx[","]=4;
+//>>excludeEnd("ctx");
+$recv(aStream)._nextPutAll_($9);
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx2.sendIdx["nextPutAll:"]=8;
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 $recv(aStream)._lf();
 $recv(aStream)._lf();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["lf"]=4;
+$ctx2.sendIdx["lf"]=4;
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 $recv(aStream)._nextPutAll_($recv(self._chunkEscape_($recv(aClass)._comment())).__comma("!"));
 $recv(aStream)._nextPutAll_($recv(self._chunkEscape_($recv(aClass)._comment())).__comma("!"));
-$12=$recv(aStream)._lf();
+$11=$recv(aStream)._lf();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["lf"]=5;
+$ctx2.sendIdx["lf"]=5;
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-$12;
-};
+return $11;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
+//>>excludeEnd("ctx");
+}));
 $recv(aStream)._lf();
 $recv(aStream)._lf();
 return self;
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
@@ -393,10 +398,10 @@ return self;
 },
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aClass", "aStream"],
 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 notEmpty ifTrue: [\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: #', (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",
 referencedClasses: [],
 referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
-messageSends: ["nextPutAll:", "classNameFor:", "superclass", ",", "lf", "tab", "do:separatedBy:", "instanceVariableNames", "category", "ifTrue:", "notEmpty", "comment", "chunkEscape:"]
+messageSends: ["nextPutAll:", "classNameFor:", "superclass", ",", "lf", "tab", "do:separatedBy:", "instanceVariableNames", "category", "ifNotEmpty:", "comment", "chunkEscape:"]
 }),
 }),
 $globals.ChunkExporter);
 $globals.ChunkExporter);
 
 
@@ -409,61 +414,58 @@ var self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-var $3,$2,$1,$5,$4,$6;
-$3=$recv(aClass)._class();
+var $2,$1,$3;
+$2=$recv(aClass)._class();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["class"]=1;
 $ctx1.sendIdx["class"]=1;
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-$2=$recv($3)._instanceVariableNames();
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["instanceVariableNames"]=1;
-//>>excludeEnd("ctx");
-$1=$recv($2)._isEmpty();
-if(!$core.assert($1)){
-$5=$recv(aClass)._class();
+$1=$recv($2)._instanceVariableNames();
+$recv($1)._ifNotEmpty_((function(classIvars){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["class"]=2;
+return $core.withContext(function($ctx2) {
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-$4=self._classNameFor_($5);
-$recv(aStream)._nextPutAll_($4);
+$recv(aStream)._nextPutAll_(self._classNameFor_($recv(aClass)._class()));
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["nextPutAll:"]=1;
+$ctx2.sendIdx["nextPutAll:"]=1;
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-$6=$recv(aStream)._nextPutAll_(" instanceVariableNames: '");
+$3=$recv(aStream)._nextPutAll_(" instanceVariableNames: '");
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["nextPutAll:"]=2;
+$ctx2.sendIdx["nextPutAll:"]=2;
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-$6;
-$recv($recv($recv(aClass)._class())._instanceVariableNames())._do_separatedBy_((function(each){
+$3;
+$recv(classIvars)._do_separatedBy_((function(each){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx2) {
+return $core.withContext(function($ctx3) {
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 return $recv(aStream)._nextPutAll_(each);
 return $recv(aStream)._nextPutAll_(each);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["nextPutAll:"]=3;
+$ctx3.sendIdx["nextPutAll:"]=3;
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
+}, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 }),(function(){
 }),(function(){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx2) {
+return $core.withContext(function($ctx3) {
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 return $recv(aStream)._nextPutAll_(" ");
 return $recv(aStream)._nextPutAll_(" ");
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["nextPutAll:"]=4;
+$ctx3.sendIdx["nextPutAll:"]=4;
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 }));
 }));
 $recv(aStream)._nextPutAll_("'!");
 $recv(aStream)._nextPutAll_("'!");
 $recv(aStream)._lf();
 $recv(aStream)._lf();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["lf"]=1;
+$ctx2.sendIdx["lf"]=1;
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-$recv(aStream)._lf();
-};
+return $recv(aStream)._lf();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({classIvars:classIvars},$ctx1,1)});
+//>>excludeEnd("ctx");
+}));
 return self;
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"exportMetaDefinitionOf:on:",{aClass:aClass,aStream:aStream},$globals.ChunkExporter)});
 }, function($ctx1) {$ctx1.fill(self,"exportMetaDefinitionOf:on:",{aClass:aClass,aStream:aStream},$globals.ChunkExporter)});
@@ -471,10 +473,10 @@ return self;
 },
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aClass", "aStream"],
 args: ["aClass", "aStream"],
-source: "exportMetaDefinitionOf: aClass on: aStream\x0a\x0a\x09aClass class instanceVariableNames isEmpty ifFalse: [\x0a\x09\x09aStream\x0a\x09\x09\x09nextPutAll: (self classNameFor: aClass class);\x0a\x09\x09\x09nextPutAll: ' instanceVariableNames: '''.\x0a\x09\x09aClass class instanceVariableNames\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 class);\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 ]",
 referencedClasses: [],
 referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
-messageSends: ["ifFalse:", "isEmpty", "instanceVariableNames", "class", "nextPutAll:", "classNameFor:", "do:separatedBy:", "lf"]
+messageSends: ["ifNotEmpty:", "instanceVariableNames", "class", "nextPutAll:", "classNameFor:", "do:separatedBy:", "lf"]
 }),
 }),
 $globals.ChunkExporter);
 $globals.ChunkExporter);
 
 
@@ -978,7 +980,7 @@ var self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-var $2,$1,$3,$4,$6,$5,$7,$9,$8;
+var $2,$1,$3,$4,$6,$5,$7,$8;
 $recv(aStream)._lf();
 $recv(aStream)._lf();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["lf"]=1;
 $ctx1.sendIdx["lf"]=1;
@@ -1054,46 +1056,51 @@ $7=$recv(aStream)._nextPutAll_(");");
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["nextPutAll:"]=9;
 $ctx1.sendIdx["nextPutAll:"]=9;
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-$9=$recv(aClass)._comment();
+$8=$recv(aClass)._comment();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["comment"]=1;
 $ctx1.sendIdx["comment"]=1;
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-$8=$recv($9)._notEmpty();
-if($core.assert($8)){
+$recv($8)._ifNotEmpty_((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
 $recv(aStream)._lf();
 $recv(aStream)._lf();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["lf"]=2;
+$ctx2.sendIdx["lf"]=2;
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 $recv(aStream)._nextPutAll_("//>>excludeStart(\x22ide\x22, pragmas.excludeIdeData);");
 $recv(aStream)._nextPutAll_("//>>excludeStart(\x22ide\x22, pragmas.excludeIdeData);");
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["nextPutAll:"]=10;
+$ctx2.sendIdx["nextPutAll:"]=10;
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 $recv(aStream)._lf();
 $recv(aStream)._lf();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["lf"]=3;
+$ctx2.sendIdx["lf"]=3;
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 $recv(aStream)._nextPutAll_(self._jsClassNameFor_(aClass));
 $recv(aStream)._nextPutAll_(self._jsClassNameFor_(aClass));
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["nextPutAll:"]=11;
+$ctx2.sendIdx["nextPutAll:"]=11;
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 $recv(aStream)._nextPutAll_(".comment=");
 $recv(aStream)._nextPutAll_(".comment=");
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["nextPutAll:"]=12;
+$ctx2.sendIdx["nextPutAll:"]=12;
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 $recv(aStream)._nextPutAll_($recv($recv($recv(aClass)._comment())._crlfSanitized())._asJavascript());
 $recv(aStream)._nextPutAll_($recv($recv($recv(aClass)._comment())._crlfSanitized())._asJavascript());
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["nextPutAll:"]=13;
+$ctx2.sendIdx["nextPutAll:"]=13;
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 $recv(aStream)._nextPutAll_(";");
 $recv(aStream)._nextPutAll_(";");
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["nextPutAll:"]=14;
+$ctx2.sendIdx["nextPutAll:"]=14;
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 $recv(aStream)._lf();
 $recv(aStream)._lf();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["lf"]=4;
+$ctx2.sendIdx["lf"]=4;
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-$recv(aStream)._nextPutAll_("//>>excludeEnd(\x22ide\x22);");
-};
+return $recv(aStream)._nextPutAll_("//>>excludeEnd(\x22ide\x22);");
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
+//>>excludeEnd("ctx");
+}));
 $recv(aStream)._lf();
 $recv(aStream)._lf();
 return self;
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
@@ -1102,10 +1109,10 @@ return self;
 },
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aClass", "aStream"],
 args: ["aClass", "aStream"],
-source: "exportDefinitionOf: aClass on: aStream\x0a\x09aStream\x0a\x09\x09lf;\x0a\x09\x09nextPutAll: '$core.addClass(';\x0a\x09\x09nextPutAll: '''', (self classNameFor: aClass), ''', ';\x0a\x09\x09nextPutAll: (self jsClassNameFor: aClass superclass);\x0a\x09\x09nextPutAll: ', ['.\x0a\x09aClass instanceVariableNames\x0a\x09\x09do: [ :each | aStream nextPutAll: '''', each, '''' ]\x0a\x09\x09separatedBy: [ aStream nextPutAll: ', ' ].\x0a\x09aStream\x0a\x09\x09nextPutAll: '], ''';\x0a\x09\x09nextPutAll: aClass category, '''';\x0a\x09\x09nextPutAll: ');'.\x0a\x09aClass comment notEmpty ifTrue: [\x0a\x09\x09aStream\x0a\x09\x09\x09lf;\x0a\x09\x09\x09nextPutAll: '//>>excludeStart(\x22ide\x22, pragmas.excludeIdeData);';\x0a\x09\x09\x09lf;\x0a\x09\x09\x09nextPutAll: (self jsClassNameFor: aClass);\x0a\x09\x09\x09nextPutAll: '.comment=';\x0a\x09\x09\x09nextPutAll: aClass comment crlfSanitized asJavascript;\x0a\x09\x09\x09nextPutAll: ';';\x0a\x09\x09\x09lf;\x0a\x09\x09\x09nextPutAll: '//>>excludeEnd(\x22ide\x22);' ].\x0a\x09aStream lf",
+source: "exportDefinitionOf: aClass on: aStream\x0a\x09aStream\x0a\x09\x09lf;\x0a\x09\x09nextPutAll: '$core.addClass(';\x0a\x09\x09nextPutAll: '''', (self classNameFor: aClass), ''', ';\x0a\x09\x09nextPutAll: (self jsClassNameFor: aClass superclass);\x0a\x09\x09nextPutAll: ', ['.\x0a\x09aClass instanceVariableNames\x0a\x09\x09do: [ :each | aStream nextPutAll: '''', each, '''' ]\x0a\x09\x09separatedBy: [ aStream nextPutAll: ', ' ].\x0a\x09aStream\x0a\x09\x09nextPutAll: '], ''';\x0a\x09\x09nextPutAll: aClass category, '''';\x0a\x09\x09nextPutAll: ');'.\x0a\x09aClass comment ifNotEmpty: [\x0a\x09\x09aStream\x0a\x09\x09\x09lf;\x0a\x09\x09\x09nextPutAll: '//>>excludeStart(\x22ide\x22, pragmas.excludeIdeData);';\x0a\x09\x09\x09lf;\x0a\x09\x09\x09nextPutAll: (self jsClassNameFor: aClass);\x0a\x09\x09\x09nextPutAll: '.comment=';\x0a\x09\x09\x09nextPutAll: aClass comment crlfSanitized asJavascript;\x0a\x09\x09\x09nextPutAll: ';';\x0a\x09\x09\x09lf;\x0a\x09\x09\x09nextPutAll: '//>>excludeEnd(\x22ide\x22);' ].\x0a\x09aStream lf",
 referencedClasses: [],
 referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
-messageSends: ["lf", "nextPutAll:", ",", "classNameFor:", "jsClassNameFor:", "superclass", "do:separatedBy:", "instanceVariableNames", "category", "ifTrue:", "notEmpty", "comment", "asJavascript", "crlfSanitized"]
+messageSends: ["lf", "nextPutAll:", ",", "classNameFor:", "jsClassNameFor:", "superclass", "do:separatedBy:", "instanceVariableNames", "category", "ifNotEmpty:", "comment", "asJavascript", "crlfSanitized"]
 }),
 }),
 $globals.Exporter);
 $globals.Exporter);
 
 
@@ -1118,68 +1125,65 @@ var self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-var $3,$2,$1,$5,$4,$6,$8,$7;
+var $2,$1,$3,$5,$4;
 $recv(aStream)._lf();
 $recv(aStream)._lf();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["lf"]=1;
 $ctx1.sendIdx["lf"]=1;
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-$3=$recv(aClass)._class();
+$2=$recv(aClass)._class();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["class"]=1;
 $ctx1.sendIdx["class"]=1;
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-$2=$recv($3)._instanceVariableNames();
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["instanceVariableNames"]=1;
-//>>excludeEnd("ctx");
-$1=$recv($2)._isEmpty();
-if(!$core.assert($1)){
-$5=$recv(aClass)._class();
+$1=$recv($2)._instanceVariableNames();
+$recv($1)._ifNotEmpty_((function(classIvars){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["class"]=2;
+return $core.withContext(function($ctx2) {
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-$4=self._jsClassNameFor_($5);
-$recv(aStream)._nextPutAll_($4);
+$recv(aStream)._nextPutAll_(self._jsClassNameFor_($recv(aClass)._class()));
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["nextPutAll:"]=1;
+$ctx2.sendIdx["nextPutAll:"]=1;
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-$6=$recv(aStream)._nextPutAll_(".iVarNames = [");
+$3=$recv(aStream)._nextPutAll_(".iVarNames = [");
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["nextPutAll:"]=2;
+$ctx2.sendIdx["nextPutAll:"]=2;
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-$6;
-$recv($recv($recv(aClass)._class())._instanceVariableNames())._do_separatedBy_((function(each){
+$3;
+$recv(classIvars)._do_separatedBy_((function(each){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx2) {
+return $core.withContext(function($ctx3) {
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-$8="'".__comma(each);
+$5="'".__comma(each);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx[","]=2;
+$ctx3.sendIdx[","]=2;
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-$7=$recv($8).__comma("'");
+$4=$recv($5).__comma("'");
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx[","]=1;
+$ctx3.sendIdx[","]=1;
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-return $recv(aStream)._nextPutAll_($7);
+return $recv(aStream)._nextPutAll_($4);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["nextPutAll:"]=3;
+$ctx3.sendIdx["nextPutAll:"]=3;
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
+}, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 }),(function(){
 }),(function(){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx2) {
+return $core.withContext(function($ctx3) {
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 return $recv(aStream)._nextPutAll_(",");
 return $recv(aStream)._nextPutAll_(",");
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["nextPutAll:"]=4;
+$ctx3.sendIdx["nextPutAll:"]=4;
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
+//>>excludeEnd("ctx");
+}));
+return $recv(aStream)._nextPutAll_("];".__comma($recv($globals.String)._lf()));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({classIvars:classIvars},$ctx1,1)});
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 }));
 }));
-$recv(aStream)._nextPutAll_("];".__comma($recv($globals.String)._lf()));
-};
 return self;
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"exportMetaDefinitionOf:on:",{aClass:aClass,aStream:aStream},$globals.Exporter)});
 }, function($ctx1) {$ctx1.fill(self,"exportMetaDefinitionOf:on:",{aClass:aClass,aStream:aStream},$globals.Exporter)});
@@ -1187,10 +1191,10 @@ return self;
 },
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aClass", "aStream"],
 args: ["aClass", "aStream"],
-source: "exportMetaDefinitionOf: aClass on: aStream\x0a\x09aStream lf.\x0a\x09aClass class instanceVariableNames isEmpty ifFalse: [\x0a\x09\x09aStream\x0a\x09\x09nextPutAll: (self jsClassNameFor: aClass class);\x0a\x09\x09nextPutAll: '.iVarNames = ['.\x0a\x09\x09aClass class instanceVariableNames\x0a\x09\x09do: [ :each | aStream nextPutAll: '''', each, '''' ]\x0a\x09\x09separatedBy: [ aStream nextPutAll: ',' ].\x0a\x09\x09aStream nextPutAll: '];', String lf ]",
+source: "exportMetaDefinitionOf: aClass on: aStream\x0a\x09aStream lf.\x0a\x09aClass class instanceVariableNames ifNotEmpty: [ :classIvars |\x0a\x09\x09aStream\x0a\x09\x09nextPutAll: (self jsClassNameFor: aClass class);\x0a\x09\x09nextPutAll: '.iVarNames = ['.\x0a\x09\x09classIvars\x0a\x09\x09do: [ :each | aStream nextPutAll: '''', each, '''' ]\x0a\x09\x09separatedBy: [ aStream nextPutAll: ',' ].\x0a\x09\x09aStream nextPutAll: '];', String lf ]",
 referencedClasses: ["String"],
 referencedClasses: ["String"],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
-messageSends: ["lf", "ifFalse:", "isEmpty", "instanceVariableNames", "class", "nextPutAll:", "jsClassNameFor:", "do:separatedBy:", ","]
+messageSends: ["lf", "ifNotEmpty:", "instanceVariableNames", "class", "nextPutAll:", "jsClassNameFor:", "do:separatedBy:", ","]
 }),
 }),
 $globals.Exporter);
 $globals.Exporter);
 
 
@@ -2304,12 +2308,16 @@ var chunk;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-var $1;
 chunk=$recv(aChunkParser)._nextChunk();
 chunk=$recv(aChunkParser)._nextChunk();
-$1=$recv(chunk)._isEmpty();
-if(!$core.assert($1)){
-self._setComment_(chunk);
-};
+$recv(chunk)._ifNotEmpty_((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
+return self._setComment_(chunk);
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
+//>>excludeEnd("ctx");
+}));
 return self;
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"scanFrom:",{aChunkParser:aChunkParser,chunk:chunk},$globals.ClassCommentReader)});
 }, function($ctx1) {$ctx1.fill(self,"scanFrom:",{aChunkParser:aChunkParser,chunk:chunk},$globals.ClassCommentReader)});
@@ -2317,10 +2325,10 @@ return self;
 },
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aChunkParser"],
 args: ["aChunkParser"],
-source: "scanFrom: aChunkParser\x0a\x09| chunk |\x0a\x09chunk := aChunkParser nextChunk.\x0a\x09chunk isEmpty ifFalse: [\x0a\x09\x09self setComment: chunk ].",
+source: "scanFrom: aChunkParser\x0a\x09| chunk |\x0a\x09chunk := aChunkParser nextChunk.\x0a\x09chunk ifNotEmpty: [\x0a\x09\x09self setComment: chunk ].",
 referencedClasses: [],
 referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
-messageSends: ["nextChunk", "ifFalse:", "isEmpty", "setComment:"]
+messageSends: ["nextChunk", "ifNotEmpty:", "setComment:"]
 }),
 }),
 $globals.ClassCommentReader);
 $globals.ClassCommentReader);
 
 
@@ -2631,7 +2639,7 @@ var chunk,result,parser,lastEmpty;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-var $1,$2;
+var $1;
 parser=$recv($globals.ChunkParser)._on_(aStream);
 parser=$recv($globals.ChunkParser)._on_(aStream);
 lastEmpty=false;
 lastEmpty=false;
 self["@lastSection"]="n/a, not started";
 self["@lastSection"]="n/a, not started";
@@ -2654,22 +2662,28 @@ return $recv(chunk)._isNil();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx3) {
 return $core.withContext(function($ctx3) {
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-$1=$recv(chunk)._isEmpty();
-if($core.assert($1)){
+return $recv(chunk)._ifEmpty_ifNotEmpty_((function(){
 lastEmpty=true;
 lastEmpty=true;
 return lastEmpty;
 return lastEmpty;
-} else {
+
+}),(function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx4) {
+//>>excludeEnd("ctx");
 self["@lastSection"]=chunk;
 self["@lastSection"]=chunk;
 self["@lastSection"];
 self["@lastSection"];
 result=$recv($recv($globals.Compiler)._new())._evaluateExpression_(chunk);
 result=$recv($recv($globals.Compiler)._new())._evaluateExpression_(chunk);
 result;
 result;
-$2=lastEmpty;
-if($core.assert($2)){
+$1=lastEmpty;
+if($core.assert($1)){
 lastEmpty=false;
 lastEmpty=false;
 lastEmpty;
 lastEmpty;
 return $recv(result)._scanFrom_(parser);
 return $recv(result)._scanFrom_(parser);
 };
 };
-};
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx4) {$ctx4.fillBlock({},$ctx3,5)});
+//>>excludeEnd("ctx");
+}));
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
 }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
@@ -2697,10 +2711,10 @@ return self;
 },
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aStream"],
 args: ["aStream"],
-source: "import: aStream\x0a\x09| chunk result parser lastEmpty |\x0a\x09parser := ChunkParser on: aStream.\x0a\x09lastEmpty := false.\x0a\x09lastSection := 'n/a, not started'.\x0a\x09lastChunk := nil.\x0a\x09[\x0a\x09[ chunk := parser nextChunk.\x0a\x09chunk isNil ] whileFalse: [\x0a\x09\x09chunk isEmpty\x0a\x09\x09\x09ifTrue: [ lastEmpty := true ]\x0a\x09\x09\x09ifFalse: [\x0a\x09\x09\x09\x09lastSection := chunk.\x0a\x09\x09\x09\x09result := Compiler new evaluateExpression: chunk.\x0a\x09\x09\x09\x09lastEmpty\x0a\x09\x09\x09\x09\x09\x09ifTrue: [\x0a\x09\x09\x09\x09\x09\x09\x09\x09\x09lastEmpty := false.\x0a\x09\x09\x09\x09\x09\x09\x09\x09\x09result scanFrom: parser ]] ].\x0a\x09lastSection := 'n/a, finished'\x0a\x09] on: Error do: [:e | lastChunk := parser last. e resignal ].",
+source: "import: aStream\x0a\x09| chunk result parser lastEmpty |\x0a\x09parser := ChunkParser on: aStream.\x0a\x09lastEmpty := false.\x0a\x09lastSection := 'n/a, not started'.\x0a\x09lastChunk := nil.\x0a\x09[\x0a\x09[ chunk := parser nextChunk.\x0a\x09chunk isNil ] whileFalse: [\x0a\x09\x09chunk\x0a\x09\x09\x09ifEmpty: [ lastEmpty := true ]\x0a\x09\x09\x09ifNotEmpty: [\x0a\x09\x09\x09\x09lastSection := chunk.\x0a\x09\x09\x09\x09result := Compiler new evaluateExpression: chunk.\x0a\x09\x09\x09\x09lastEmpty\x0a\x09\x09\x09\x09\x09\x09ifTrue: [\x0a\x09\x09\x09\x09\x09\x09\x09\x09\x09lastEmpty := false.\x0a\x09\x09\x09\x09\x09\x09\x09\x09\x09result scanFrom: parser ]] ].\x0a\x09lastSection := 'n/a, finished'\x0a\x09] on: Error do: [:e | lastChunk := parser last. e resignal ].",
 referencedClasses: ["ChunkParser", "Compiler", "Error"],
 referencedClasses: ["ChunkParser", "Compiler", "Error"],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
-messageSends: ["on:", "on:do:", "whileFalse:", "nextChunk", "isNil", "ifTrue:ifFalse:", "isEmpty", "evaluateExpression:", "new", "ifTrue:", "scanFrom:", "last", "resignal"]
+messageSends: ["on:", "on:do:", "whileFalse:", "nextChunk", "isNil", "ifEmpty:ifNotEmpty:", "evaluateExpression:", "new", "ifTrue:", "scanFrom:", "last", "resignal"]
 }),
 }),
 $globals.Importer);
 $globals.Importer);
 
 

+ 10 - 10
src/Platform-ImportExport.st

@@ -144,7 +144,7 @@ exportDefinitionOf: aClass on: aStream
 	aStream
 	aStream
 		nextPutAll: ''''; lf;
 		nextPutAll: ''''; lf;
 		tab; nextPutAll: 'package: ''', aClass category, '''!!'; lf.
 		tab; nextPutAll: 'package: ''', aClass category, '''!!'; lf.
-	aClass comment notEmpty ifTrue: [
+	aClass comment ifNotEmpty: [
 		aStream
 		aStream
 		nextPutAll: '!!', (self classNameFor: aClass), ' commentStamp!!';lf;
 		nextPutAll: '!!', (self classNameFor: aClass), ' commentStamp!!';lf;
 		nextPutAll: (self chunkEscape: aClass comment), '!!';lf ].
 		nextPutAll: (self chunkEscape: aClass comment), '!!';lf ].
@@ -153,11 +153,11 @@ exportDefinitionOf: aClass on: aStream
 
 
 exportMetaDefinitionOf: aClass on: aStream
 exportMetaDefinitionOf: aClass on: aStream
 
 
-	aClass class instanceVariableNames isEmpty ifFalse: [
+	aClass class instanceVariableNames ifNotEmpty: [ :classIvars |
 		aStream
 		aStream
 			nextPutAll: (self classNameFor: aClass class);
 			nextPutAll: (self classNameFor: aClass class);
 			nextPutAll: ' instanceVariableNames: '''.
 			nextPutAll: ' instanceVariableNames: '''.
-		aClass class instanceVariableNames
+		classIvars
 			do: [ :each | aStream nextPutAll: each ]
 			do: [ :each | aStream nextPutAll: each ]
 			separatedBy: [ aStream nextPutAll: ' ' ].
 			separatedBy: [ aStream nextPutAll: ' ' ].
 		aStream
 		aStream
@@ -287,7 +287,7 @@ exportDefinitionOf: aClass on: aStream
 		nextPutAll: '], ''';
 		nextPutAll: '], ''';
 		nextPutAll: aClass category, '''';
 		nextPutAll: aClass category, '''';
 		nextPutAll: ');'.
 		nextPutAll: ');'.
-	aClass comment notEmpty ifTrue: [
+	aClass comment ifNotEmpty: [
 		aStream
 		aStream
 			lf;
 			lf;
 			nextPutAll: '//>>excludeStart("ide", pragmas.excludeIdeData);';
 			nextPutAll: '//>>excludeStart("ide", pragmas.excludeIdeData);';
@@ -303,11 +303,11 @@ exportDefinitionOf: aClass on: aStream
 
 
 exportMetaDefinitionOf: aClass on: aStream
 exportMetaDefinitionOf: aClass on: aStream
 	aStream lf.
 	aStream lf.
-	aClass class instanceVariableNames isEmpty ifFalse: [
+	aClass class instanceVariableNames ifNotEmpty: [ :classIvars |
 		aStream
 		aStream
 		nextPutAll: (self jsClassNameFor: aClass class);
 		nextPutAll: (self jsClassNameFor: aClass class);
 		nextPutAll: '.iVarNames = ['.
 		nextPutAll: '.iVarNames = ['.
-		aClass class instanceVariableNames
+		classIvars
 		do: [ :each | aStream nextPutAll: '''', each, '''' ]
 		do: [ :each | aStream nextPutAll: '''', each, '''' ]
 		separatedBy: [ aStream nextPutAll: ',' ].
 		separatedBy: [ aStream nextPutAll: ',' ].
 		aStream nextPutAll: '];', String lf ]
 		aStream nextPutAll: '];', String lf ]
@@ -547,7 +547,7 @@ class: aClass
 scanFrom: aChunkParser
 scanFrom: aChunkParser
 	| chunk |
 	| chunk |
 	chunk := aChunkParser nextChunk.
 	chunk := aChunkParser nextChunk.
-	chunk isEmpty ifFalse: [
+	chunk ifNotEmpty: [
 		self setComment: chunk ].
 		self setComment: chunk ].
 ! !
 ! !
 
 
@@ -669,9 +669,9 @@ import: aStream
 	[
 	[
 	[ chunk := parser nextChunk.
 	[ chunk := parser nextChunk.
 	chunk isNil ] whileFalse: [
 	chunk isNil ] whileFalse: [
-		chunk isEmpty
-			ifTrue: [ lastEmpty := true ]
-			ifFalse: [
+		chunk
+			ifEmpty: [ lastEmpty := true ]
+			ifNotEmpty: [
 				lastSection := chunk.
 				lastSection := chunk.
 				result := Compiler new evaluateExpression: chunk.
 				result := Compiler new evaluateExpression: chunk.
 				lastEmpty
 				lastEmpty

+ 22 - 15
src/SUnit.js

@@ -1402,21 +1402,28 @@ var self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-var $2,$3,$1;
-$2=$recv(self._errors())._isEmpty();
+var $1;
+$1=$recv(self._errors())._ifNotEmpty_ifEmpty_((function(){
+return "error";
+
+}),(function(){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["isEmpty"]=1;
+return $core.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
+return $recv(self._failures())._ifNotEmpty_ifEmpty_((function(){
+return "failure";
+
+}),(function(){
+return "success";
+
+}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
+//>>excludeEnd("ctx");
+}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["ifNotEmpty:ifEmpty:"]=1;
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-if($core.assert($2)){
-$3=$recv(self._failures())._isEmpty();
-if($core.assert($3)){
-$1="success";
-} else {
-$1="failure";
-};
-} else {
-$1="error";
-};
 return $1;
 return $1;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"status",{},$globals.TestResult)});
 }, function($ctx1) {$ctx1.fill(self,"status",{},$globals.TestResult)});
@@ -1424,10 +1431,10 @@ return $1;
 },
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
-source: "status\x0a\x09^ self errors isEmpty\x0a\x09\x09ifTrue: [\x0a\x09\x09\x09self failures isEmpty\x0a\x09\x09\x09\x09ifTrue: [ 'success' ]\x0a\x09\x09\x09\x09ifFalse: [ 'failure' ]]\x0a\x09\x09ifFalse: [ 'error' ]",
+source: "status\x0a\x09^ self errors ifNotEmpty: [ 'error' ] ifEmpty: [\x0a\x09\x09self failures ifNotEmpty: [ 'failure' ] ifEmpty: [\x0a\x09\x09\x09'success' ]]",
 referencedClasses: [],
 referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
-messageSends: ["ifTrue:ifFalse:", "isEmpty", "errors", "failures"]
+messageSends: ["ifNotEmpty:ifEmpty:", "errors", "failures"]
 }),
 }),
 $globals.TestResult);
 $globals.TestResult);
 
 

+ 3 - 6
src/SUnit.st

@@ -337,12 +337,9 @@ runs
 !
 !
 
 
 status
 status
-	^ self errors isEmpty
-		ifTrue: [
-			self failures isEmpty
-				ifTrue: [ 'success' ]
-				ifFalse: [ 'failure' ]]
-		ifFalse: [ 'error' ]
+	^ self errors ifNotEmpty: [ 'error' ] ifEmpty: [
+		self failures ifNotEmpty: [ 'failure' ] ifEmpty: [
+			'success' ]]
 !
 !
 
 
 timestamp
 timestamp