Explorar el Código

do not count up res names for no reason

Markus Kahl hace 11 años
padre
commit
f8155c34c1
Se han modificado 3 ficheros con 29 adiciones y 23 borrados
  1. 13 10
      cli/js/AmberCli.js
  2. 13 10
      cli/js/amber-cli.js
  3. 3 3
      cli/st/AmberCli.st

+ 13 - 10
cli/js/AmberCli.js

@@ -1149,15 +1149,18 @@ fn: function (buffer){
 var self=this;
 var assignment,varName,value;
 return smalltalk.withContext(function($ctx1) { 
-assignment=self._parseAssignment_onFailUseName_withExpr_(buffer,self._nextResultName(),buffer);
+assignment=self._parseAssignment_onFail_(buffer,(function(){
+return smalltalk.withContext(function($ctx2) {
+return ["name".__minus_gt(self._nextResultName()),"expr".__minus_gt(buffer)];
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 varName=_st(assignment)._at_("name");
 self["@session"]=self._addVariableNamed_to_(varName,self["@session"]);
 value=self._eval_on_quiet_(_st(_st(varName).__comma(" := ")).__comma(_st(assignment)._at_("expr")),self["@session"],true);
 self._presentResultNamed_withValue_(varName,value);
 return self}, function($ctx1) {$ctx1.fill(self,"assignNewVariable:",{buffer:buffer,assignment:assignment,varName:varName,value:value},smalltalk.Repl)})},
 args: ["buffer"],
-source: "assignNewVariable: buffer\x0a\x09| assignment varName value |\x0a\x09assignment := self parseAssignment: buffer onFailUseName: self nextResultName withExpr: buffer.\x0a\x09varName := assignment at: 'name'.\x0a\x09session := self addVariableNamed: varName to: session.\x0a\x09value := self eval: varName, ' := ', (assignment at: 'expr') on: session quiet: true.\x0a\x09self presentResultNamed: varName withValue: value",
-messageSends: ["parseAssignment:onFailUseName:withExpr:", "nextResultName", "at:", "addVariableNamed:to:", "eval:on:quiet:", ",", "presentResultNamed:withValue:"],
+source: "assignNewVariable: buffer\x0a\x09| assignment varName value |\x0a\x09assignment := self parseAssignment: buffer onFail: [{'name' -> self nextResultName. 'expr' -> buffer}].\x0a\x09varName := assignment at: 'name'.\x0a\x09session := self addVariableNamed: varName to: session.\x0a\x09value := self eval: varName, ' := ', (assignment at: 'expr') on: session quiet: true.\x0a\x09self presentResultNamed: varName withValue: value",
+messageSends: ["parseAssignment:onFail:", "->", "nextResultName", "at:", "addVariableNamed:to:", "eval:on:quiet:", ",", "presentResultNamed:withValue:"],
 referencedClasses: []
 }),
 smalltalk.Repl);
@@ -1495,9 +1498,9 @@ smalltalk.Repl);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "parseAssignment:onFailUseName:withExpr:",
+selector: "parseAssignment:onFail:",
 category: 'private',
-fn: function (aString,nameString,exprString){
+fn: function (aString,aBlock){
 var self=this;
 var assignment;
 function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
@@ -1514,13 +1517,13 @@ return self._isIdentifier_(_st(assignment)._first());
 if(smalltalk.assert($2)){
 $1=_st($Dictionary())._from_(["name".__minus_gt(_st(assignment)._first()),"expr".__minus_gt(_st(assignment)._last())]);
 } else {
-$1=_st($Dictionary())._from_(["name".__minus_gt(nameString),"expr".__minus_gt(exprString)]);
+$1=_st($Dictionary())._from_(_st(aBlock)._value());
 };
 return $1;
-}, function($ctx1) {$ctx1.fill(self,"parseAssignment:onFailUseName:withExpr:",{aString:aString,nameString:nameString,exprString:exprString,assignment:assignment},smalltalk.Repl)})},
-args: ["aString", "nameString", "exprString"],
-source: "parseAssignment: aString onFailUseName: nameString withExpr: exprString\x0a\x09\x22Returns a variable name and its assigned expression if the given expression is an assignment; nil otherwise.\x22\x0a\x09| assignment |\x0a\x09assignment := (aString tokenize: ':=') collect: [:s | s trimBoth].\x0a\x09^ (assignment size = 2 and: [self isIdentifier: assignment first])\x0a\x09\x09ifTrue: [Dictionary from: {'name' -> assignment first. 'expr' -> assignment last}]\x0a\x09\x09ifFalse: [Dictionary from: {'name' -> nameString. 'expr' -> exprString}]",
-messageSends: ["collect:", "trimBoth", "tokenize:", "ifTrue:ifFalse:", "from:", "->", "first", "last", "and:", "isIdentifier:", "=", "size"],
+}, function($ctx1) {$ctx1.fill(self,"parseAssignment:onFail:",{aString:aString,aBlock:aBlock,assignment:assignment},smalltalk.Repl)})},
+args: ["aString", "aBlock"],
+source: "parseAssignment: aString onFail: aBlock\x0a\x09\x22Returns a variable name and its assigned expression if the given expression is an assignment; nil otherwise.\x22\x0a\x09| assignment |\x0a\x09assignment := (aString tokenize: ':=') collect: [:s | s trimBoth].\x0a\x09^ (assignment size = 2 and: [self isIdentifier: assignment first])\x0a\x09\x09ifTrue: [Dictionary from: {'name' -> assignment first. 'expr' -> assignment last}]\x0a\x09\x09ifFalse: [Dictionary from: aBlock value]",
+messageSends: ["collect:", "trimBoth", "tokenize:", "ifTrue:ifFalse:", "from:", "->", "first", "last", "value", "and:", "isIdentifier:", "=", "size"],
 referencedClasses: ["Dictionary"]
 }),
 smalltalk.Repl);

+ 13 - 10
cli/js/amber-cli.js

@@ -35604,15 +35604,18 @@ fn: function (buffer){
 var self=this;
 var assignment,varName,value;
 return smalltalk.withContext(function($ctx1) { 
-assignment=self._parseAssignment_onFailUseName_withExpr_(buffer,self._nextResultName(),buffer);
+assignment=self._parseAssignment_onFail_(buffer,(function(){
+return smalltalk.withContext(function($ctx2) {
+return ["name".__minus_gt(self._nextResultName()),"expr".__minus_gt(buffer)];
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 varName=_st(assignment)._at_("name");
 self["@session"]=self._addVariableNamed_to_(varName,self["@session"]);
 value=self._eval_on_quiet_(_st(_st(varName).__comma(" := ")).__comma(_st(assignment)._at_("expr")),self["@session"],true);
 self._presentResultNamed_withValue_(varName,value);
 return self}, function($ctx1) {$ctx1.fill(self,"assignNewVariable:",{buffer:buffer,assignment:assignment,varName:varName,value:value},smalltalk.Repl)})},
 args: ["buffer"],
-source: "assignNewVariable: buffer\x0a\x09| assignment varName value |\x0a\x09assignment := self parseAssignment: buffer onFailUseName: self nextResultName withExpr: buffer.\x0a\x09varName := assignment at: 'name'.\x0a\x09session := self addVariableNamed: varName to: session.\x0a\x09value := self eval: varName, ' := ', (assignment at: 'expr') on: session quiet: true.\x0a\x09self presentResultNamed: varName withValue: value",
-messageSends: ["parseAssignment:onFailUseName:withExpr:", "nextResultName", "at:", "addVariableNamed:to:", "eval:on:quiet:", ",", "presentResultNamed:withValue:"],
+source: "assignNewVariable: buffer\x0a\x09| assignment varName value |\x0a\x09assignment := self parseAssignment: buffer onFail: [{'name' -> self nextResultName. 'expr' -> buffer}].\x0a\x09varName := assignment at: 'name'.\x0a\x09session := self addVariableNamed: varName to: session.\x0a\x09value := self eval: varName, ' := ', (assignment at: 'expr') on: session quiet: true.\x0a\x09self presentResultNamed: varName withValue: value",
+messageSends: ["parseAssignment:onFail:", "->", "nextResultName", "at:", "addVariableNamed:to:", "eval:on:quiet:", ",", "presentResultNamed:withValue:"],
 referencedClasses: []
 }),
 smalltalk.Repl);
@@ -35950,9 +35953,9 @@ smalltalk.Repl);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "parseAssignment:onFailUseName:withExpr:",
+selector: "parseAssignment:onFail:",
 category: 'private',
-fn: function (aString,nameString,exprString){
+fn: function (aString,aBlock){
 var self=this;
 var assignment;
 function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
@@ -35969,13 +35972,13 @@ return self._isIdentifier_(_st(assignment)._first());
 if(smalltalk.assert($2)){
 $1=_st($Dictionary())._from_(["name".__minus_gt(_st(assignment)._first()),"expr".__minus_gt(_st(assignment)._last())]);
 } else {
-$1=_st($Dictionary())._from_(["name".__minus_gt(nameString),"expr".__minus_gt(exprString)]);
+$1=_st($Dictionary())._from_(_st(aBlock)._value());
 };
 return $1;
-}, function($ctx1) {$ctx1.fill(self,"parseAssignment:onFailUseName:withExpr:",{aString:aString,nameString:nameString,exprString:exprString,assignment:assignment},smalltalk.Repl)})},
-args: ["aString", "nameString", "exprString"],
-source: "parseAssignment: aString onFailUseName: nameString withExpr: exprString\x0a\x09\x22Returns a variable name and its assigned expression if the given expression is an assignment; nil otherwise.\x22\x0a\x09| assignment |\x0a\x09assignment := (aString tokenize: ':=') collect: [:s | s trimBoth].\x0a\x09^ (assignment size = 2 and: [self isIdentifier: assignment first])\x0a\x09\x09ifTrue: [Dictionary from: {'name' -> assignment first. 'expr' -> assignment last}]\x0a\x09\x09ifFalse: [Dictionary from: {'name' -> nameString. 'expr' -> exprString}]",
-messageSends: ["collect:", "trimBoth", "tokenize:", "ifTrue:ifFalse:", "from:", "->", "first", "last", "and:", "isIdentifier:", "=", "size"],
+}, function($ctx1) {$ctx1.fill(self,"parseAssignment:onFail:",{aString:aString,aBlock:aBlock,assignment:assignment},smalltalk.Repl)})},
+args: ["aString", "aBlock"],
+source: "parseAssignment: aString onFail: aBlock\x0a\x09\x22Returns a variable name and its assigned expression if the given expression is an assignment; nil otherwise.\x22\x0a\x09| assignment |\x0a\x09assignment := (aString tokenize: ':=') collect: [:s | s trimBoth].\x0a\x09^ (assignment size = 2 and: [self isIdentifier: assignment first])\x0a\x09\x09ifTrue: [Dictionary from: {'name' -> assignment first. 'expr' -> assignment last}]\x0a\x09\x09ifFalse: [Dictionary from: aBlock value]",
+messageSends: ["collect:", "trimBoth", "tokenize:", "ifTrue:ifFalse:", "from:", "->", "first", "last", "value", "and:", "isIdentifier:", "=", "size"],
 referencedClasses: ["Dictionary"]
 }),
 smalltalk.Repl);

+ 3 - 3
cli/st/AmberCli.st

@@ -975,7 +975,7 @@ line: buffer
 
 assignNewVariable: buffer
 	| assignment varName value |
-	assignment := self parseAssignment: buffer onFailUseName: self nextResultName withExpr: buffer.
+	assignment := self parseAssignment: buffer onFail: [{'name' -> self nextResultName. 'expr' -> buffer}].
 	varName := assignment at: 'name'.
 	session := self addVariableNamed: varName to: session.
 	value := self eval: varName, ' := ', (assignment at: 'expr') on: session quiet: true.
@@ -987,13 +987,13 @@ presentResultNamed: varName withValue: value
 	interface prompt
 !
 
-parseAssignment: aString onFailUseName: nameString withExpr: exprString
+parseAssignment: aString onFail: aBlock
 	"Returns a variable name and its assigned expression if the given expression is an assignment; nil otherwise."
 	| assignment |
 	assignment := (aString tokenize: ':=') collect: [:s | s trimBoth].
 	^ (assignment size = 2 and: [self isIdentifier: assignment first])
 		ifTrue: [Dictionary from: {'name' -> assignment first. 'expr' -> assignment last}]
-		ifFalse: [Dictionary from: {'name' -> nameString. 'expr' -> exprString}]
+		ifFalse: [Dictionary from: aBlock value]
 !
 
 isIdentifier: aString