Browse Source

Remove test-only #isJSStatementNode.

Herby Vojčík 4 years ago
parent
commit
0864daf565
4 changed files with 65 additions and 58 deletions
  1. 0 36
      lang/src/Compiler-AST.js
  2. 0 8
      lang/src/Compiler-AST.st
  3. 52 10
      lang/src/Compiler-Tests.js
  4. 13 4
      lang/src/Compiler-Tests.st

+ 0 - 36
lang/src/Compiler-AST.js

@@ -129,24 +129,6 @@ return false;
 }; }),
 $globals.ASTNode);
 
-$core.addMethod(
-$core.method({
-selector: "isJSStatementNode",
-protocol: "testing",
-//>>excludeStart("ide", pragmas.excludeIdeData);
-args: [],
-source: "isJSStatementNode\x0a\x09^ false",
-referencedClasses: [],
-//>>excludeEnd("ide");
-pragmas: [],
-messageSends: []
-}, function ($methodClass){ return function (){
-var self=this,$self=this;
-return false;
-
-}; }),
-$globals.ASTNode);
-
 $core.addMethod(
 $core.method({
 selector: "isNavigationNode",
@@ -1202,24 +1184,6 @@ return $recv(aVisitor)._visitJSStatementNode_(self);
 }; }),
 $globals.JSStatementNode);
 
-$core.addMethod(
-$core.method({
-selector: "isJSStatementNode",
-protocol: "testing",
-//>>excludeStart("ide", pragmas.excludeIdeData);
-args: [],
-source: "isJSStatementNode\x0a\x09^ true",
-referencedClasses: [],
-//>>excludeEnd("ide");
-pragmas: [],
-messageSends: []
-}, function ($methodClass){ return function (){
-var self=this,$self=this;
-return true;
-
-}; }),
-$globals.JSStatementNode);
-
 $core.addMethod(
 $core.method({
 selector: "requiresSmalltalkContext",

+ 0 - 8
lang/src/Compiler-AST.st

@@ -124,10 +124,6 @@ isImmutable
 	^ false
 !
 
-isJSStatementNode
-	^ false
-!
-
 isNavigationNode
 	"Answer true if the node can be navigated to"
 	
@@ -306,10 +302,6 @@ I represent an JavaScript statement node.!
 
 !JSStatementNode methodsFor: 'testing'!
 
-isJSStatementNode
-	^ true
-!
-
 requiresSmalltalkContext
 	^ true
 ! !

+ 52 - 10
lang/src/Compiler-Tests.js

@@ -1772,33 +1772,75 @@ return $recv($1)._yourself();
 }; }),
 $globals.ASTPCNodeVisitorTest);
 
+$core.addMethod(
+$core.method({
+selector: "newTeachableVisitor",
+protocol: "factory",
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: [],
+source: "newTeachableVisitor\x0a\x09| result |\x0a\x09result := Teachable new\x0a\x09\x09whenSend: #visit: evaluate: [ :one | one acceptDagVisitor: result ];\x0a\x09\x09acceptSend: #visitDagNode:.\x0a\x09^ result",
+referencedClasses: ["Teachable"],
+//>>excludeEnd("ide");
+pragmas: [],
+messageSends: ["whenSend:evaluate:", "new", "acceptDagVisitor:", "acceptSend:"]
+}, function ($methodClass){ return function (){
+var self=this,$self=this;
+var result;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+var $1;
+$1=$recv($globals.Teachable)._new();
+$recv($1)._whenSend_evaluate_("visit:",(function(one){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
+return $recv(one)._acceptDagVisitor_(result);
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({one:one},$ctx1,1)});
+//>>excludeEnd("ctx");
+}));
+result=$recv($1)._acceptSend_("visitDagNode:");
+return result;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"newTeachableVisitor",{result:result})});
+//>>excludeEnd("ctx");
+}; }),
+$globals.ASTPCNodeVisitorTest);
+
 $core.addMethod(
 $core.method({
 selector: "testJSStatementNode",
 protocol: "tests",
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
-source: "testJSStatementNode\x0a\x09| ast visitor |\x0a\x09\x0a\x09ast := self parse: 'foo <inlineJS: ''consolee.log(1)''>' forClass: Object.\x0a\x09self assert: (self astPCNodeVisitor\x0a\x09\x09visit: ast;\x0a\x09\x09currentNode) isJSStatementNode",
+source: "testJSStatementNode\x0a\x09| ast result |\x0a\x09\x0a\x09ast := self parse: 'foo <inlineJS: ''consolee.log(1)''>' forClass: Object.\x0a\x09result := self astPCNodeVisitor visit: ast; currentNode.\x0a\x09self\x0a\x09\x09assert: ((self newTeachableVisitor whenSend: #visitJSStatementNode: return: 'JS'; yourself) visit: result)\x0a\x09\x09equals: 'JS'",
 referencedClasses: ["Object"],
 //>>excludeEnd("ide");
 pragmas: [],
-messageSends: ["parse:forClass:", "assert:", "isJSStatementNode", "visit:", "astPCNodeVisitor", "currentNode"]
+messageSends: ["parse:forClass:", "visit:", "astPCNodeVisitor", "currentNode", "assert:equals:", "whenSend:return:", "newTeachableVisitor", "yourself"]
 }, function ($methodClass){ return function (){
 var self=this,$self=this;
-var ast,visitor;
+var ast,result;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $3,$2,$1;
+var $1,$4,$3,$2;
 ast=$self._parse_forClass_("foo <inlineJS: 'consolee.log(1)'>",$globals.Object);
-$3=$self._astPCNodeVisitor();
-$recv($3)._visit_(ast);
-$2=$recv($3)._currentNode();
-$1=$recv($2)._isJSStatementNode();
-$self._assert_($1);
+$1=$self._astPCNodeVisitor();
+$recv($1)._visit_(ast);
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["visit:"]=1;
+//>>excludeEnd("ctx");
+result=$recv($1)._currentNode();
+$4=$self._newTeachableVisitor();
+$recv($4)._whenSend_return_("visitJSStatementNode:","JS");
+$3=$recv($4)._yourself();
+$2=$recv($3)._visit_(result);
+$self._assert_equals_($2,"JS");
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"testJSStatementNode",{ast:ast,visitor:visitor})});
+}, function($ctx1) {$ctx1.fill(self,"testJSStatementNode",{ast:ast,result:result})});
 //>>excludeEnd("ctx");
 }; }),
 $globals.ASTPCNodeVisitorTest);

+ 13 - 4
lang/src/Compiler-Tests.st

@@ -472,17 +472,26 @@ astPCNodeVisitorForSelector: aString
 		selector: aString;
 		index: 0;
 		yourself
+!
+
+newTeachableVisitor
+	| result |
+	result := Teachable new
+		whenSend: #visit: evaluate: [ :one | one acceptDagVisitor: result ];
+		acceptSend: #visitDagNode:.
+	^ result
 ! !
 
 !ASTPCNodeVisitorTest methodsFor: 'tests'!
 
 testJSStatementNode
-	| ast visitor |
+	| ast result |
 	
 	ast := self parse: 'foo <inlineJS: ''consolee.log(1)''>' forClass: Object.
-	self assert: (self astPCNodeVisitor
-		visit: ast;
-		currentNode) isJSStatementNode
+	result := self astPCNodeVisitor visit: ast; currentNode.
+	self
+		assert: ((self newTeachableVisitor whenSend: #visitJSStatementNode: return: 'JS'; yourself) visit: result)
+		equals: 'JS'
 !
 
 testMessageSend