Browse Source

Node => ASTNode

Herbert Vojčík 7 years ago
parent
commit
45f5f03a99
4 changed files with 143 additions and 189 deletions
  1. 63 99
      src/Compiler-AST.js
  2. 15 25
      src/Compiler-AST.st
  3. 51 51
      src/Compiler-Interpreter.js
  4. 14 14
      src/Compiler-Interpreter.st

+ 63 - 99
src/Compiler-AST.js

@@ -1,4 +1,4 @@
-define(["amber/boot", "amber_core/Kernel-Dag", "amber_core/Kernel-Methods", "amber_core/Kernel-Objects"], function($boot){"use strict";
+define(["amber/boot", "amber_core/Kernel-Dag", "amber_core/Kernel-Methods"], function($boot){"use strict";
 if(!$boot.nilAsReceiver)$boot.nilAsReceiver=$boot.nil;
 var $core=$boot.api,nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
 if(!$boot.nilAsClass)$boot.nilAsClass=$boot.dnu;
@@ -6,9 +6,9 @@ $core.addPackage('Compiler-AST');
 $core.packages["Compiler-AST"].innerEval = function (expr) { return eval(expr); };
 $core.packages["Compiler-AST"].transport = {"type":"amd","amdNamespace":"amber_core"};
 
-$core.addClass('Node', $globals.DagParentNode, ['parent', 'position', 'source', 'shouldBeInlined', 'shouldBeAliased'], 'Compiler-AST');
+$core.addClass('ASTNode', $globals.DagParentNode, ['parent', 'position', 'source', 'shouldBeInlined', 'shouldBeAliased'], 'Compiler-AST');
 //>>excludeStart("ide", pragmas.excludeIdeData);
-$globals.Node.comment="I am the abstract root class of the abstract syntax tree.\x0a\x0aConcrete classes should implement `#accept:` to allow visiting.\x0a\x0a`position` holds a point containing line and column number of the symbol location in the original source file.";
+$globals.ASTNode.comment="I am the abstract root class of the abstract syntax tree.\x0a\x0aConcrete classes should implement `#accept:` to allow visiting.\x0a\x0a`position` holds a point containing line and column number of the symbol location in the original source file.";
 //>>excludeEnd("ide");
 $core.addMethod(
 $core.method({
@@ -29,7 +29,7 @@ return $recv(self._positionEnd()).__gt_eq(aPoint);
 //>>excludeEnd("ctx");
 }));
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"inPosition:",{aPoint:aPoint},$globals.Node)});
+}, function($ctx1) {$ctx1.fill(self,"inPosition:",{aPoint:aPoint},$globals.ASTNode)});
 //>>excludeEnd("ctx");
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
@@ -39,7 +39,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 messageSends: ["and:", "<=", "positionStart", ">=", "positionEnd"]
 }),
-$globals.Node);
+$globals.ASTNode);
 
 $core.addMethod(
 $core.method({
@@ -57,7 +57,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 messageSends: []
 }),
-$globals.Node);
+$globals.ASTNode);
 
 $core.addMethod(
 $core.method({
@@ -75,7 +75,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 messageSends: []
 }),
-$globals.Node);
+$globals.ASTNode);
 
 $core.addMethod(
 $core.method({
@@ -93,7 +93,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 messageSends: []
 }),
-$globals.Node);
+$globals.ASTNode);
 
 $core.addMethod(
 $core.method({
@@ -111,7 +111,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 messageSends: []
 }),
-$globals.Node);
+$globals.ASTNode);
 
 $core.addMethod(
 $core.method({
@@ -129,7 +129,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 messageSends: []
 }),
-$globals.Node);
+$globals.ASTNode);
 
 $core.addMethod(
 $core.method({
@@ -147,7 +147,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 messageSends: []
 }),
-$globals.Node);
+$globals.ASTNode);
 
 $core.addMethod(
 $core.method({
@@ -160,7 +160,7 @@ return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
 return $recv($recv($recv(self._parent())._dagChildren())._last()).__eq(self);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"isLastChild",{},$globals.Node)});
+}, function($ctx1) {$ctx1.fill(self,"isLastChild",{},$globals.ASTNode)});
 //>>excludeEnd("ctx");
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
@@ -170,7 +170,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 messageSends: ["=", "last", "dagChildren", "parent"]
 }),
-$globals.Node);
+$globals.ASTNode);
 
 $core.addMethod(
 $core.method({
@@ -188,25 +188,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 messageSends: []
 }),
-$globals.Node);
-
-$core.addMethod(
-$core.method({
-selector: "isNode",
-protocol: 'testing',
-fn: function (){
-var self=this;
-return true;
-
-},
-//>>excludeStart("ide", pragmas.excludeIdeData);
-args: [],
-source: "isNode\x0a\x09^ true",
-referencedClasses: [],
-//>>excludeEnd("ide");
-messageSends: []
-}),
-$globals.Node);
+$globals.ASTNode);
 
 $core.addMethod(
 $core.method({
@@ -234,7 +216,7 @@ return $recv(self._parent())._isAssignmentNode();
 }));
 return $recv($1)._not();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"isReferenced",{},$globals.Node)});
+}, function($ctx1) {$ctx1.fill(self,"isReferenced",{},$globals.ASTNode)});
 //>>excludeEnd("ctx");
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
@@ -244,7 +226,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 messageSends: ["not", "or:", "isSequenceNode", "parent", "isAssignmentNode"]
 }),
-$globals.Node);
+$globals.ASTNode);
 
 $core.addMethod(
 $core.method({
@@ -262,7 +244,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 messageSends: []
 }),
-$globals.Node);
+$globals.ASTNode);
 
 $core.addMethod(
 $core.method({
@@ -280,7 +262,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 messageSends: []
 }),
-$globals.Node);
+$globals.ASTNode);
 
 $core.addMethod(
 $core.method({
@@ -298,7 +280,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 messageSends: []
 }),
-$globals.Node);
+$globals.ASTNode);
 
 $core.addMethod(
 $core.method({
@@ -316,7 +298,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 messageSends: []
 }),
-$globals.Node);
+$globals.ASTNode);
 
 $core.addMethod(
 $core.method({
@@ -334,7 +316,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 messageSends: []
 }),
-$globals.Node);
+$globals.ASTNode);
 
 $core.addMethod(
 $core.method({
@@ -352,7 +334,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 messageSends: []
 }),
-$globals.Node);
+$globals.ASTNode);
 
 $core.addMethod(
 $core.method({
@@ -373,7 +355,7 @@ $1=$recv($2).__at($recv($recv(aLocation)._start())._column());
 self._position_($1);
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"location:",{aLocation:aLocation},$globals.Node)});
+}, function($ctx1) {$ctx1.fill(self,"location:",{aLocation:aLocation},$globals.ASTNode)});
 //>>excludeEnd("ctx");
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
@@ -383,7 +365,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 messageSends: ["position:", "@", "line", "start", "column"]
 }),
-$globals.Node);
+$globals.ASTNode);
 
 $core.addMethod(
 $core.method({
@@ -404,7 +386,7 @@ node=$receiver;
 return $recv(node)._method();
 };
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"method",{},$globals.Node)});
+}, function($ctx1) {$ctx1.fill(self,"method",{},$globals.ASTNode)});
 //>>excludeEnd("ctx");
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
@@ -414,7 +396,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 messageSends: ["ifNotNil:", "parent", "method"]
 }),
-$globals.Node);
+$globals.ASTNode);
 
 $core.addMethod(
 $core.method({
@@ -475,7 +457,7 @@ return $recv($1).__lt_eq($recv($recv(b)._positionStart())._dist_(aPoint));
 }
 catch(e) {if(e===$early)return e[0]; throw e}
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"navigationNodeAt:ifAbsent:",{aPoint:aPoint,aBlock:aBlock,children:children},$globals.Node)});
+}, function($ctx1) {$ctx1.fill(self,"navigationNodeAt:ifAbsent:",{aPoint:aPoint,aBlock:aBlock,children:children},$globals.ASTNode)});
 //>>excludeEnd("ctx");
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
@@ -485,7 +467,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 messageSends: ["select:", "allDagChildren", "and:", "isNavigationNode", "inPosition:", "ifEmpty:", "value", "first", "sort:", "asArray", "<=", "dist:", "positionStart"]
 }),
-$globals.Node);
+$globals.ASTNode);
 
 $core.addMethod(
 $core.method({
@@ -503,7 +485,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 messageSends: []
 }),
-$globals.Node);
+$globals.ASTNode);
 
 $core.addMethod(
 $core.method({
@@ -522,7 +504,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 messageSends: []
 }),
-$globals.Node);
+$globals.ASTNode);
 
 $core.addMethod(
 $core.method({
@@ -548,7 +530,7 @@ return $recv(node)._position();
 return $1;
 };
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"position",{},$globals.Node)});
+}, function($ctx1) {$ctx1.fill(self,"position",{},$globals.ASTNode)});
 //>>excludeEnd("ctx");
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
@@ -558,7 +540,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 messageSends: ["ifNil:", "ifNotNil:", "parent", "position"]
 }),
-$globals.Node);
+$globals.ASTNode);
 
 $core.addMethod(
 $core.method({
@@ -577,7 +559,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 messageSends: []
 }),
-$globals.Node);
+$globals.ASTNode);
 
 $core.addMethod(
 $core.method({
@@ -609,7 +591,7 @@ $ctx1.sendIdx["-"]=1;
 $2=$recv($3).__at($recv($recv($recv($recv(self._source())._lines())._last())._size()).__minus((1)));
 return $recv($1).__plus($2);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"positionEnd",{},$globals.Node)});
+}, function($ctx1) {$ctx1.fill(self,"positionEnd",{},$globals.ASTNode)});
 //>>excludeEnd("ctx");
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
@@ -619,7 +601,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 messageSends: ["+", "positionStart", "@", "-", "size", "lines", "source", "last"]
 }),
-$globals.Node);
+$globals.ASTNode);
 
 $core.addMethod(
 $core.method({
@@ -632,7 +614,7 @@ return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
 return self._position();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"positionStart",{},$globals.Node)});
+}, function($ctx1) {$ctx1.fill(self,"positionStart",{},$globals.ASTNode)});
 //>>excludeEnd("ctx");
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
@@ -642,7 +624,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 messageSends: ["position"]
 }),
-$globals.Node);
+$globals.ASTNode);
 
 $core.addMethod(
 $core.method({
@@ -666,7 +648,7 @@ return nil;
 
 })))._notNil();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"requiresSmalltalkContext",{},$globals.Node)});
+}, function($ctx1) {$ctx1.fill(self,"requiresSmalltalkContext",{},$globals.ASTNode)});
 //>>excludeEnd("ctx");
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
@@ -676,7 +658,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 messageSends: ["notNil", "detect:ifNone:", "dagChildren", "requiresSmalltalkContext"]
 }),
-$globals.Node);
+$globals.ASTNode);
 
 $core.addMethod(
 $core.method({
@@ -695,7 +677,7 @@ return false;
 return $1;
 };
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"shouldBeAliased",{},$globals.Node)});
+}, function($ctx1) {$ctx1.fill(self,"shouldBeAliased",{},$globals.ASTNode)});
 //>>excludeEnd("ctx");
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
@@ -705,7 +687,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 messageSends: ["ifNil:"]
 }),
-$globals.Node);
+$globals.ASTNode);
 
 $core.addMethod(
 $core.method({
@@ -724,7 +706,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 messageSends: []
 }),
-$globals.Node);
+$globals.ASTNode);
 
 $core.addMethod(
 $core.method({
@@ -743,7 +725,7 @@ return false;
 return $1;
 };
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"shouldBeInlined",{},$globals.Node)});
+}, function($ctx1) {$ctx1.fill(self,"shouldBeInlined",{},$globals.ASTNode)});
 //>>excludeEnd("ctx");
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
@@ -753,7 +735,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 messageSends: ["ifNil:"]
 }),
-$globals.Node);
+$globals.ASTNode);
 
 $core.addMethod(
 $core.method({
@@ -772,7 +754,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 messageSends: []
 }),
-$globals.Node);
+$globals.ASTNode);
 
 $core.addMethod(
 $core.method({
@@ -785,7 +767,7 @@ return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
 return $recv(self._source())._size();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"size",{},$globals.Node)});
+}, function($ctx1) {$ctx1.fill(self,"size",{},$globals.ASTNode)});
 //>>excludeEnd("ctx");
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
@@ -795,7 +777,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 messageSends: ["size", "source"]
 }),
-$globals.Node);
+$globals.ASTNode);
 
 $core.addMethod(
 $core.method({
@@ -814,7 +796,7 @@ return "";
 return $1;
 };
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"source",{},$globals.Node)});
+}, function($ctx1) {$ctx1.fill(self,"source",{},$globals.ASTNode)});
 //>>excludeEnd("ctx");
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
@@ -824,7 +806,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 messageSends: ["ifNil:"]
 }),
-$globals.Node);
+$globals.ASTNode);
 
 $core.addMethod(
 $core.method({
@@ -843,7 +825,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 messageSends: []
 }),
-$globals.Node);
+$globals.ASTNode);
 
 $core.addMethod(
 $core.method({
@@ -885,7 +867,7 @@ $ctx1.sendIdx["or:"]=1;
 //>>excludeEnd("ctx");
 return $1;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"subtreeNeedsAliasing",{},$globals.Node)});
+}, function($ctx1) {$ctx1.fill(self,"subtreeNeedsAliasing",{},$globals.ASTNode)});
 //>>excludeEnd("ctx");
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
@@ -895,11 +877,11 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 messageSends: ["or:", "shouldBeAliased", "shouldBeInlined", "anySatisfy:", "dagChildren", "subtreeNeedsAliasing"]
 }),
-$globals.Node);
+$globals.ASTNode);
 
 
 
-$core.addClass('AssignmentNode', $globals.Node, ['left', 'right'], 'Compiler-AST');
+$core.addClass('AssignmentNode', $globals.ASTNode, ['left', 'right'], 'Compiler-AST');
 //>>excludeStart("ide", pragmas.excludeIdeData);
 $globals.AssignmentNode.comment="I represent an assignment node.";
 //>>excludeEnd("ide");
@@ -1083,7 +1065,7 @@ $globals.AssignmentNode);
 
 
 
-$core.addClass('BlockNode', $globals.Node, ['parameters', 'scope'], 'Compiler-AST');
+$core.addClass('BlockNode', $globals.ASTNode, ['parameters', 'scope'], 'Compiler-AST');
 //>>excludeStart("ide", pragmas.excludeIdeData);
 $globals.BlockNode.comment="I represent an block closure node.";
 //>>excludeEnd("ide");
@@ -1247,7 +1229,7 @@ $globals.BlockNode);
 
 
 
-$core.addClass('CascadeNode', $globals.Node, ['receiver'], 'Compiler-AST');
+$core.addClass('CascadeNode', $globals.ASTNode, ['receiver'], 'Compiler-AST');
 //>>excludeStart("ide", pragmas.excludeIdeData);
 $globals.CascadeNode.comment="I represent an cascade node.";
 //>>excludeEnd("ide");
@@ -1354,7 +1336,7 @@ $globals.CascadeNode);
 
 
 
-$core.addClass('DynamicArrayNode', $globals.Node, [], 'Compiler-AST');
+$core.addClass('DynamicArrayNode', $globals.ASTNode, [], 'Compiler-AST');
 //>>excludeStart("ide", pragmas.excludeIdeData);
 $globals.DynamicArrayNode.comment="I represent an dynamic array node.";
 //>>excludeEnd("ide");
@@ -1383,7 +1365,7 @@ $globals.DynamicArrayNode);
 
 
 
-$core.addClass('DynamicDictionaryNode', $globals.Node, [], 'Compiler-AST');
+$core.addClass('DynamicDictionaryNode', $globals.ASTNode, [], 'Compiler-AST');
 //>>excludeStart("ide", pragmas.excludeIdeData);
 $globals.DynamicDictionaryNode.comment="I represent an dynamic dictionary node.";
 //>>excludeEnd("ide");
@@ -1412,7 +1394,7 @@ $globals.DynamicDictionaryNode);
 
 
 
-$core.addClass('JSStatementNode', $globals.Node, [], 'Compiler-AST');
+$core.addClass('JSStatementNode', $globals.ASTNode, [], 'Compiler-AST');
 //>>excludeStart("ide", pragmas.excludeIdeData);
 $globals.JSStatementNode.comment="I represent an JavaScript statement node.";
 //>>excludeEnd("ide");
@@ -1477,7 +1459,7 @@ $globals.JSStatementNode);
 
 
 
-$core.addClass('MethodNode', $globals.Node, ['selector', 'arguments', 'source', 'scope', 'classReferences', 'sendIndexes'], 'Compiler-AST');
+$core.addClass('MethodNode', $globals.ASTNode, ['selector', 'arguments', 'source', 'scope', 'classReferences', 'sendIndexes'], 'Compiler-AST');
 //>>excludeStart("ide", pragmas.excludeIdeData);
 $globals.MethodNode.comment="I represent an method node.\x0a\x0aA method node must be the root and only method node of a valid AST.";
 //>>excludeEnd("ide");
@@ -1820,7 +1802,7 @@ $globals.MethodNode);
 
 
 
-$core.addClass('ReturnNode', $globals.Node, ['scope'], 'Compiler-AST');
+$core.addClass('ReturnNode', $globals.ASTNode, ['scope'], 'Compiler-AST');
 //>>excludeStart("ide", pragmas.excludeIdeData);
 $globals.ReturnNode.comment="I represent an return node. At the AST level, there is not difference between a local return or non-local return.";
 //>>excludeEnd("ide");
@@ -1927,7 +1909,7 @@ $globals.ReturnNode);
 
 
 
-$core.addClass('SendNode', $globals.Node, ['selector', 'arguments', 'receiver', 'index'], 'Compiler-AST');
+$core.addClass('SendNode', $globals.ASTNode, ['selector', 'arguments', 'receiver', 'index'], 'Compiler-AST');
 //>>excludeStart("ide", pragmas.excludeIdeData);
 $globals.SendNode.comment="I represent an message send node.";
 //>>excludeEnd("ide");
@@ -2393,7 +2375,7 @@ $globals.SendNode);
 
 
 
-$core.addClass('SequenceNode', $globals.Node, ['temps', 'scope'], 'Compiler-AST');
+$core.addClass('SequenceNode', $globals.ASTNode, ['temps', 'scope'], 'Compiler-AST');
 //>>excludeStart("ide", pragmas.excludeIdeData);
 $globals.SequenceNode.comment="I represent an sequence node. A sequence represent a set of instructions inside the same scope (the method scope or a block scope).";
 //>>excludeEnd("ide");
@@ -2601,7 +2583,7 @@ $globals.BlockSequenceNode);
 
 
 
-$core.addClass('ValueNode', $globals.Node, ['value'], 'Compiler-AST');
+$core.addClass('ValueNode', $globals.ASTNode, ['value'], 'Compiler-AST');
 //>>excludeStart("ide", pragmas.excludeIdeData);
 $globals.ValueNode.comment="I represent a value node.";
 //>>excludeEnd("ide");
@@ -3403,22 +3385,4 @@ messageSends: ["ifEmpty:", "source", "error:", "parse:"]
 }),
 $globals.CompiledMethod);
 
-$core.addMethod(
-$core.method({
-selector: "isNode",
-protocol: '*Compiler-AST',
-fn: function (){
-var self=this;
-return false;
-
-},
-//>>excludeStart("ide", pragmas.excludeIdeData);
-args: [],
-source: "isNode\x0a\x09^ false",
-referencedClasses: [],
-//>>excludeEnd("ide");
-messageSends: []
-}),
-$globals.Object);
-
 });

+ 15 - 25
src/Compiler-AST.st

@@ -1,15 +1,15 @@
 Smalltalk createPackage: 'Compiler-AST'!
-DagParentNode subclass: #Node
+DagParentNode subclass: #ASTNode
 	instanceVariableNames: 'parent position source shouldBeInlined shouldBeAliased'
 	package: 'Compiler-AST'!
-!Node commentStamp!
+!ASTNode commentStamp!
 I am the abstract root class of the abstract syntax tree.
 
 Concrete classes should implement `#accept:` to allow visiting.
 
 `position` holds a point containing line and column number of the symbol location in the original source file.!
 
-!Node methodsFor: 'accessing'!
+!ASTNode methodsFor: 'accessing'!
 
 location: aLocation
 	self position: aLocation start line @ aLocation start column
@@ -92,7 +92,7 @@ source: aString
 	source := aString
 ! !
 
-!Node methodsFor: 'testing'!
+!ASTNode methodsFor: 'testing'!
 
 inPosition: aPoint
 	^ (self positionStart <= aPoint and: [
@@ -133,10 +133,6 @@ isNavigationNode
 	^ false
 !
 
-isNode
-	^ true
-!
-
 isReferenced
 	"Answer true if the receiver is referenced by other nodes.
 	Do not take sequences or assignments into account"
@@ -186,7 +182,7 @@ subtreeNeedsAliasing
 		self dagChildren anySatisfy: [ :each | each subtreeNeedsAliasing ] ]
 ! !
 
-Node subclass: #AssignmentNode
+ASTNode subclass: #AssignmentNode
 	instanceVariableNames: 'left right'
 	package: 'Compiler-AST'!
 !AssignmentNode commentStamp!
@@ -230,7 +226,7 @@ acceptDagVisitor: aVisitor
 	^ aVisitor visitAssignmentNode: self
 ! !
 
-Node subclass: #BlockNode
+ASTNode subclass: #BlockNode
 	instanceVariableNames: 'parameters scope'
 	package: 'Compiler-AST'!
 !BlockNode commentStamp!
@@ -270,7 +266,7 @@ acceptDagVisitor: aVisitor
 	^ aVisitor visitBlockNode: self
 ! !
 
-Node subclass: #CascadeNode
+ASTNode subclass: #CascadeNode
 	instanceVariableNames: 'receiver'
 	package: 'Compiler-AST'!
 !CascadeNode commentStamp!
@@ -302,7 +298,7 @@ acceptDagVisitor: aVisitor
 	^ aVisitor visitCascadeNode: self
 ! !
 
-Node subclass: #DynamicArrayNode
+ASTNode subclass: #DynamicArrayNode
 	instanceVariableNames: ''
 	package: 'Compiler-AST'!
 !DynamicArrayNode commentStamp!
@@ -314,7 +310,7 @@ acceptDagVisitor: aVisitor
 	^ aVisitor visitDynamicArrayNode: self
 ! !
 
-Node subclass: #DynamicDictionaryNode
+ASTNode subclass: #DynamicDictionaryNode
 	instanceVariableNames: ''
 	package: 'Compiler-AST'!
 !DynamicDictionaryNode commentStamp!
@@ -326,7 +322,7 @@ acceptDagVisitor: aVisitor
 	^ aVisitor visitDynamicDictionaryNode: self
 ! !
 
-Node subclass: #JSStatementNode
+ASTNode subclass: #JSStatementNode
 	instanceVariableNames: ''
 	package: 'Compiler-AST'!
 !JSStatementNode commentStamp!
@@ -348,7 +344,7 @@ acceptDagVisitor: aVisitor
 	^ aVisitor visitJSStatementNode: self
 ! !
 
-Node subclass: #MethodNode
+ASTNode subclass: #MethodNode
 	instanceVariableNames: 'selector arguments source scope classReferences sendIndexes'
 	package: 'Compiler-AST'!
 !MethodNode commentStamp!
@@ -427,7 +423,7 @@ acceptDagVisitor: aVisitor
 	^ aVisitor visitMethodNode: self
 ! !
 
-Node subclass: #ReturnNode
+ASTNode subclass: #ReturnNode
 	instanceVariableNames: 'scope'
 	package: 'Compiler-AST'!
 !ReturnNode commentStamp!
@@ -459,7 +455,7 @@ acceptDagVisitor: aVisitor
 	^ aVisitor visitReturnNode: self
 ! !
 
-Node subclass: #SendNode
+ASTNode subclass: #SendNode
 	instanceVariableNames: 'selector arguments receiver index'
 	package: 'Compiler-AST'!
 !SendNode commentStamp!
@@ -567,7 +563,7 @@ acceptDagVisitor: aVisitor
 	^ aVisitor visitSendNode: self
 ! !
 
-Node subclass: #SequenceNode
+ASTNode subclass: #SequenceNode
 	instanceVariableNames: 'temps scope'
 	package: 'Compiler-AST'!
 !SequenceNode commentStamp!
@@ -632,7 +628,7 @@ acceptDagVisitor: aVisitor
 	^ aVisitor visitBlockSequenceNode: self
 ! !
 
-Node subclass: #ValueNode
+ASTNode subclass: #ValueNode
 	instanceVariableNames: 'value'
 	package: 'Compiler-AST'!
 !ValueNode commentStamp!
@@ -806,9 +802,3 @@ ast
 	^ Smalltalk parse: self source
 ! !
 
-!Object methodsFor: '*Compiler-AST'!
-
-isNode
-	^ false
-! !
-

+ 51 - 51
src/Compiler-Interpreter.js

@@ -3771,53 +3771,70 @@ selector: "isSteppingNode",
 protocol: '*Compiler-Interpreter',
 fn: function (){
 var self=this;
-return true;
+return false;
 
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
-source: "isSteppingNode\x0a\x09^ true",
+source: "isSteppingNode\x0a\x09^ false",
 referencedClasses: [],
 //>>excludeEnd("ide");
 messageSends: []
 }),
-$globals.AssignmentNode);
+$globals.ASTNode);
 
 $core.addMethod(
 $core.method({
-selector: "isSteppingNode",
+selector: "nextSiblingNode:",
 protocol: '*Compiler-Interpreter',
-fn: function (){
+fn: function (aNode){
 var self=this;
-return true;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+var $1;
+var $early={};
+try {
+$1=self._dagChildren();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["dagChildren"]=1;
+//>>excludeEnd("ctx");
+return $recv($1)._at_ifAbsent_($recv($recv(self._dagChildren())._indexOf_(aNode)).__plus((1)),(function(){
+throw $early=[nil];
 
+}));
+}
+catch(e) {if(e===$early)return e[0]; throw e}
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"nextSiblingNode:",{aNode:aNode},$globals.ASTNode)});
+//>>excludeEnd("ctx");
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
-args: [],
-source: "isSteppingNode\x0a\x09^ true",
+args: ["aNode"],
+source: "nextSiblingNode: aNode\x0a\x09\x22Answer the next node after aNode or nil\x22\x0a\x09\x0a\x09^ self dagChildren \x0a\x09\x09at: (self dagChildren indexOf: aNode) + 1\x0a\x09\x09ifAbsent: [ ^ nil ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
-messageSends: []
+messageSends: ["at:ifAbsent:", "dagChildren", "+", "indexOf:"]
 }),
-$globals.BlockNode);
+$globals.ASTNode);
 
 $core.addMethod(
 $core.method({
-selector: "nextSiblingNode:",
+selector: "isSteppingNode",
 protocol: '*Compiler-Interpreter',
-fn: function (aNode){
+fn: function (){
 var self=this;
-return nil;
+return true;
 
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
-args: ["aNode"],
-source: "nextSiblingNode: aNode\x0a\x09\x22Answer nil as we want to avoid eager evaluation\x22\x0a\x09\x0a\x09\x22In fact, this should not have been called, ever. IMO. -- herby\x22\x0a\x09\x0a\x09^ nil",
+args: [],
+source: "isSteppingNode\x0a\x09^ true",
 referencedClasses: [],
 //>>excludeEnd("ide");
 messageSends: []
 }),
-$globals.BlockNode);
+$globals.AssignmentNode);
 
 $core.addMethod(
 $core.method({
@@ -3835,25 +3852,25 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 messageSends: []
 }),
-$globals.DynamicArrayNode);
+$globals.BlockNode);
 
 $core.addMethod(
 $core.method({
-selector: "isSteppingNode",
+selector: "nextSiblingNode:",
 protocol: '*Compiler-Interpreter',
-fn: function (){
+fn: function (aNode){
 var self=this;
-return true;
+return nil;
 
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
-args: [],
-source: "isSteppingNode\x0a\x09^ true",
+args: ["aNode"],
+source: "nextSiblingNode: aNode\x0a\x09\x22Answer nil as we want to avoid eager evaluation\x22\x0a\x09\x0a\x09\x22In fact, this should not have been called, ever. IMO. -- herby\x22\x0a\x09\x0a\x09^ nil",
 referencedClasses: [],
 //>>excludeEnd("ide");
 messageSends: []
 }),
-$globals.DynamicDictionaryNode);
+$globals.BlockNode);
 
 $core.addMethod(
 $core.method({
@@ -3871,7 +3888,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 messageSends: []
 }),
-$globals.JSStatementNode);
+$globals.DynamicArrayNode);
 
 $core.addMethod(
 $core.method({
@@ -3879,52 +3896,35 @@ selector: "isSteppingNode",
 protocol: '*Compiler-Interpreter',
 fn: function (){
 var self=this;
-return false;
+return true;
 
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
-source: "isSteppingNode\x0a\x09^ false",
+source: "isSteppingNode\x0a\x09^ true",
 referencedClasses: [],
 //>>excludeEnd("ide");
 messageSends: []
 }),
-$globals.Node);
+$globals.DynamicDictionaryNode);
 
 $core.addMethod(
 $core.method({
-selector: "nextSiblingNode:",
+selector: "isSteppingNode",
 protocol: '*Compiler-Interpreter',
-fn: function (aNode){
+fn: function (){
 var self=this;
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx1) {
-//>>excludeEnd("ctx");
-var $1;
-var $early={};
-try {
-$1=self._dagChildren();
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["dagChildren"]=1;
-//>>excludeEnd("ctx");
-return $recv($1)._at_ifAbsent_($recv($recv(self._dagChildren())._indexOf_(aNode)).__plus((1)),(function(){
-throw $early=[nil];
+return true;
 
-}));
-}
-catch(e) {if(e===$early)return e[0]; throw e}
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"nextSiblingNode:",{aNode:aNode},$globals.Node)});
-//>>excludeEnd("ctx");
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
-args: ["aNode"],
-source: "nextSiblingNode: aNode\x0a\x09\x22Answer the next node after aNode or nil\x22\x0a\x09\x0a\x09^ self dagChildren \x0a\x09\x09at: (self dagChildren indexOf: aNode) + 1\x0a\x09\x09ifAbsent: [ ^ nil ]",
+args: [],
+source: "isSteppingNode\x0a\x09^ true",
 referencedClasses: [],
 //>>excludeEnd("ide");
-messageSends: ["at:ifAbsent:", "dagChildren", "+", "indexOf:"]
+messageSends: []
 }),
-$globals.Node);
+$globals.JSStatementNode);
 
 $core.addMethod(
 $core.method({

+ 14 - 14
src/Compiler-Interpreter.st

@@ -974,6 +974,20 @@ visitSendNode: aNode
 		self increaseIndex ]
 ! !
 
+!ASTNode methodsFor: '*Compiler-Interpreter'!
+
+isSteppingNode
+	^ false
+!
+
+nextSiblingNode: aNode
+	"Answer the next node after aNode or nil"
+	
+	^ self dagChildren 
+		at: (self dagChildren indexOf: aNode) + 1
+		ifAbsent: [ ^ nil ]
+! !
+
 !AssignmentNode methodsFor: '*Compiler-Interpreter'!
 
 isSteppingNode
@@ -1012,20 +1026,6 @@ isSteppingNode
 	^ true
 ! !
 
-!Node methodsFor: '*Compiler-Interpreter'!
-
-isSteppingNode
-	^ false
-!
-
-nextSiblingNode: aNode
-	"Answer the next node after aNode or nil"
-	
-	^ self dagChildren 
-		at: (self dagChildren indexOf: aNode) + 1
-		ifAbsent: [ ^ nil ]
-! !
-
 !SendNode methodsFor: '*Compiler-Interpreter'!
 
 isSteppingNode