2
0
Herbert Vojčík 7 rokov pred
rodič
commit
45f5f03a99
4 zmenil súbory, kde vykonal 143 pridanie a 189 odobranie
  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;
 if(!$boot.nilAsReceiver)$boot.nilAsReceiver=$boot.nil;
 var $core=$boot.api,nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
 var $core=$boot.api,nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
 if(!$boot.nilAsClass)$boot.nilAsClass=$boot.dnu;
 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"].innerEval = function (expr) { return eval(expr); };
 $core.packages["Compiler-AST"].transport = {"type":"amd","amdNamespace":"amber_core"};
 $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);
 //>>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");
 //>>excludeEnd("ide");
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
@@ -29,7 +29,7 @@ return $recv(self._positionEnd()).__gt_eq(aPoint);
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 }));
 }));
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>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");
 //>>excludeEnd("ctx");
 },
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 //>>excludeStart("ide", pragmas.excludeIdeData);
@@ -39,7 +39,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
 messageSends: ["and:", "<=", "positionStart", ">=", "positionEnd"]
 messageSends: ["and:", "<=", "positionStart", ">=", "positionEnd"]
 }),
 }),
-$globals.Node);
+$globals.ASTNode);
 
 
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
@@ -57,7 +57,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
 messageSends: []
 messageSends: []
 }),
 }),
-$globals.Node);
+$globals.ASTNode);
 
 
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
@@ -75,7 +75,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
 messageSends: []
 messageSends: []
 }),
 }),
-$globals.Node);
+$globals.ASTNode);
 
 
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
@@ -93,7 +93,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
 messageSends: []
 messageSends: []
 }),
 }),
-$globals.Node);
+$globals.ASTNode);
 
 
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
@@ -111,7 +111,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
 messageSends: []
 messageSends: []
 }),
 }),
-$globals.Node);
+$globals.ASTNode);
 
 
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
@@ -129,7 +129,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
 messageSends: []
 messageSends: []
 }),
 }),
-$globals.Node);
+$globals.ASTNode);
 
 
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
@@ -147,7 +147,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
 messageSends: []
 messageSends: []
 }),
 }),
-$globals.Node);
+$globals.ASTNode);
 
 
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
@@ -160,7 +160,7 @@ return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 return $recv($recv($recv(self._parent())._dagChildren())._last()).__eq(self);
 return $recv($recv($recv(self._parent())._dagChildren())._last()).__eq(self);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"isLastChild",{},$globals.Node)});
+}, function($ctx1) {$ctx1.fill(self,"isLastChild",{},$globals.ASTNode)});
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 },
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 //>>excludeStart("ide", pragmas.excludeIdeData);
@@ -170,7 +170,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
 messageSends: ["=", "last", "dagChildren", "parent"]
 messageSends: ["=", "last", "dagChildren", "parent"]
 }),
 }),
-$globals.Node);
+$globals.ASTNode);
 
 
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
@@ -188,25 +188,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
 messageSends: []
 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.addMethod(
 $core.method({
 $core.method({
@@ -234,7 +216,7 @@ return $recv(self._parent())._isAssignmentNode();
 }));
 }));
 return $recv($1)._not();
 return $recv($1)._not();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"isReferenced",{},$globals.Node)});
+}, function($ctx1) {$ctx1.fill(self,"isReferenced",{},$globals.ASTNode)});
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 },
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 //>>excludeStart("ide", pragmas.excludeIdeData);
@@ -244,7 +226,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
 messageSends: ["not", "or:", "isSequenceNode", "parent", "isAssignmentNode"]
 messageSends: ["not", "or:", "isSequenceNode", "parent", "isAssignmentNode"]
 }),
 }),
-$globals.Node);
+$globals.ASTNode);
 
 
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
@@ -262,7 +244,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
 messageSends: []
 messageSends: []
 }),
 }),
-$globals.Node);
+$globals.ASTNode);
 
 
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
@@ -280,7 +262,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
 messageSends: []
 messageSends: []
 }),
 }),
-$globals.Node);
+$globals.ASTNode);
 
 
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
@@ -298,7 +280,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
 messageSends: []
 messageSends: []
 }),
 }),
-$globals.Node);
+$globals.ASTNode);
 
 
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
@@ -316,7 +298,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
 messageSends: []
 messageSends: []
 }),
 }),
-$globals.Node);
+$globals.ASTNode);
 
 
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
@@ -334,7 +316,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
 messageSends: []
 messageSends: []
 }),
 }),
-$globals.Node);
+$globals.ASTNode);
 
 
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
@@ -352,7 +334,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
 messageSends: []
 messageSends: []
 }),
 }),
-$globals.Node);
+$globals.ASTNode);
 
 
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
@@ -373,7 +355,7 @@ $1=$recv($2).__at($recv($recv(aLocation)._start())._column());
 self._position_($1);
 self._position_($1);
 return self;
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>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");
 //>>excludeEnd("ctx");
 },
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 //>>excludeStart("ide", pragmas.excludeIdeData);
@@ -383,7 +365,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
 messageSends: ["position:", "@", "line", "start", "column"]
 messageSends: ["position:", "@", "line", "start", "column"]
 }),
 }),
-$globals.Node);
+$globals.ASTNode);
 
 
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
@@ -404,7 +386,7 @@ node=$receiver;
 return $recv(node)._method();
 return $recv(node)._method();
 };
 };
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"method",{},$globals.Node)});
+}, function($ctx1) {$ctx1.fill(self,"method",{},$globals.ASTNode)});
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 },
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 //>>excludeStart("ide", pragmas.excludeIdeData);
@@ -414,7 +396,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
 messageSends: ["ifNotNil:", "parent", "method"]
 messageSends: ["ifNotNil:", "parent", "method"]
 }),
 }),
-$globals.Node);
+$globals.ASTNode);
 
 
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $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}
 catch(e) {if(e===$early)return e[0]; throw e}
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>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");
 //>>excludeEnd("ctx");
 },
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 //>>excludeStart("ide", pragmas.excludeIdeData);
@@ -485,7 +467,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
 messageSends: ["select:", "allDagChildren", "and:", "isNavigationNode", "inPosition:", "ifEmpty:", "value", "first", "sort:", "asArray", "<=", "dist:", "positionStart"]
 messageSends: ["select:", "allDagChildren", "and:", "isNavigationNode", "inPosition:", "ifEmpty:", "value", "first", "sort:", "asArray", "<=", "dist:", "positionStart"]
 }),
 }),
-$globals.Node);
+$globals.ASTNode);
 
 
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
@@ -503,7 +485,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
 messageSends: []
 messageSends: []
 }),
 }),
-$globals.Node);
+$globals.ASTNode);
 
 
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
@@ -522,7 +504,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
 messageSends: []
 messageSends: []
 }),
 }),
-$globals.Node);
+$globals.ASTNode);
 
 
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
@@ -548,7 +530,7 @@ return $recv(node)._position();
 return $1;
 return $1;
 };
 };
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"position",{},$globals.Node)});
+}, function($ctx1) {$ctx1.fill(self,"position",{},$globals.ASTNode)});
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 },
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 //>>excludeStart("ide", pragmas.excludeIdeData);
@@ -558,7 +540,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
 messageSends: ["ifNil:", "ifNotNil:", "parent", "position"]
 messageSends: ["ifNil:", "ifNotNil:", "parent", "position"]
 }),
 }),
-$globals.Node);
+$globals.ASTNode);
 
 
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
@@ -577,7 +559,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
 messageSends: []
 messageSends: []
 }),
 }),
-$globals.Node);
+$globals.ASTNode);
 
 
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
@@ -609,7 +591,7 @@ $ctx1.sendIdx["-"]=1;
 $2=$recv($3).__at($recv($recv($recv($recv(self._source())._lines())._last())._size()).__minus((1)));
 $2=$recv($3).__at($recv($recv($recv($recv(self._source())._lines())._last())._size()).__minus((1)));
 return $recv($1).__plus($2);
 return $recv($1).__plus($2);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"positionEnd",{},$globals.Node)});
+}, function($ctx1) {$ctx1.fill(self,"positionEnd",{},$globals.ASTNode)});
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 },
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 //>>excludeStart("ide", pragmas.excludeIdeData);
@@ -619,7 +601,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
 messageSends: ["+", "positionStart", "@", "-", "size", "lines", "source", "last"]
 messageSends: ["+", "positionStart", "@", "-", "size", "lines", "source", "last"]
 }),
 }),
-$globals.Node);
+$globals.ASTNode);
 
 
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
@@ -632,7 +614,7 @@ return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 return self._position();
 return self._position();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"positionStart",{},$globals.Node)});
+}, function($ctx1) {$ctx1.fill(self,"positionStart",{},$globals.ASTNode)});
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 },
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 //>>excludeStart("ide", pragmas.excludeIdeData);
@@ -642,7 +624,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
 messageSends: ["position"]
 messageSends: ["position"]
 }),
 }),
-$globals.Node);
+$globals.ASTNode);
 
 
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
@@ -666,7 +648,7 @@ return nil;
 
 
 })))._notNil();
 })))._notNil();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"requiresSmalltalkContext",{},$globals.Node)});
+}, function($ctx1) {$ctx1.fill(self,"requiresSmalltalkContext",{},$globals.ASTNode)});
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 },
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 //>>excludeStart("ide", pragmas.excludeIdeData);
@@ -676,7 +658,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
 messageSends: ["notNil", "detect:ifNone:", "dagChildren", "requiresSmalltalkContext"]
 messageSends: ["notNil", "detect:ifNone:", "dagChildren", "requiresSmalltalkContext"]
 }),
 }),
-$globals.Node);
+$globals.ASTNode);
 
 
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
@@ -695,7 +677,7 @@ return false;
 return $1;
 return $1;
 };
 };
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"shouldBeAliased",{},$globals.Node)});
+}, function($ctx1) {$ctx1.fill(self,"shouldBeAliased",{},$globals.ASTNode)});
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 },
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 //>>excludeStart("ide", pragmas.excludeIdeData);
@@ -705,7 +687,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
 messageSends: ["ifNil:"]
 messageSends: ["ifNil:"]
 }),
 }),
-$globals.Node);
+$globals.ASTNode);
 
 
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
@@ -724,7 +706,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
 messageSends: []
 messageSends: []
 }),
 }),
-$globals.Node);
+$globals.ASTNode);
 
 
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
@@ -743,7 +725,7 @@ return false;
 return $1;
 return $1;
 };
 };
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"shouldBeInlined",{},$globals.Node)});
+}, function($ctx1) {$ctx1.fill(self,"shouldBeInlined",{},$globals.ASTNode)});
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 },
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 //>>excludeStart("ide", pragmas.excludeIdeData);
@@ -753,7 +735,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
 messageSends: ["ifNil:"]
 messageSends: ["ifNil:"]
 }),
 }),
-$globals.Node);
+$globals.ASTNode);
 
 
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
@@ -772,7 +754,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
 messageSends: []
 messageSends: []
 }),
 }),
-$globals.Node);
+$globals.ASTNode);
 
 
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
@@ -785,7 +767,7 @@ return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 return $recv(self._source())._size();
 return $recv(self._source())._size();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"size",{},$globals.Node)});
+}, function($ctx1) {$ctx1.fill(self,"size",{},$globals.ASTNode)});
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 },
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 //>>excludeStart("ide", pragmas.excludeIdeData);
@@ -795,7 +777,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
 messageSends: ["size", "source"]
 messageSends: ["size", "source"]
 }),
 }),
-$globals.Node);
+$globals.ASTNode);
 
 
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
@@ -814,7 +796,7 @@ return "";
 return $1;
 return $1;
 };
 };
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"source",{},$globals.Node)});
+}, function($ctx1) {$ctx1.fill(self,"source",{},$globals.ASTNode)});
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 },
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 //>>excludeStart("ide", pragmas.excludeIdeData);
@@ -824,7 +806,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
 messageSends: ["ifNil:"]
 messageSends: ["ifNil:"]
 }),
 }),
-$globals.Node);
+$globals.ASTNode);
 
 
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
@@ -843,7 +825,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
 messageSends: []
 messageSends: []
 }),
 }),
-$globals.Node);
+$globals.ASTNode);
 
 
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
@@ -885,7 +867,7 @@ $ctx1.sendIdx["or:"]=1;
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 return $1;
 return $1;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"subtreeNeedsAliasing",{},$globals.Node)});
+}, function($ctx1) {$ctx1.fill(self,"subtreeNeedsAliasing",{},$globals.ASTNode)});
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 },
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 //>>excludeStart("ide", pragmas.excludeIdeData);
@@ -895,11 +877,11 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
 messageSends: ["or:", "shouldBeAliased", "shouldBeInlined", "anySatisfy:", "dagChildren", "subtreeNeedsAliasing"]
 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);
 //>>excludeStart("ide", pragmas.excludeIdeData);
 $globals.AssignmentNode.comment="I represent an assignment node.";
 $globals.AssignmentNode.comment="I represent an assignment node.";
 //>>excludeEnd("ide");
 //>>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);
 //>>excludeStart("ide", pragmas.excludeIdeData);
 $globals.BlockNode.comment="I represent an block closure node.";
 $globals.BlockNode.comment="I represent an block closure node.";
 //>>excludeEnd("ide");
 //>>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);
 //>>excludeStart("ide", pragmas.excludeIdeData);
 $globals.CascadeNode.comment="I represent an cascade node.";
 $globals.CascadeNode.comment="I represent an cascade node.";
 //>>excludeEnd("ide");
 //>>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);
 //>>excludeStart("ide", pragmas.excludeIdeData);
 $globals.DynamicArrayNode.comment="I represent an dynamic array node.";
 $globals.DynamicArrayNode.comment="I represent an dynamic array node.";
 //>>excludeEnd("ide");
 //>>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);
 //>>excludeStart("ide", pragmas.excludeIdeData);
 $globals.DynamicDictionaryNode.comment="I represent an dynamic dictionary node.";
 $globals.DynamicDictionaryNode.comment="I represent an dynamic dictionary node.";
 //>>excludeEnd("ide");
 //>>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);
 //>>excludeStart("ide", pragmas.excludeIdeData);
 $globals.JSStatementNode.comment="I represent an JavaScript statement node.";
 $globals.JSStatementNode.comment="I represent an JavaScript statement node.";
 //>>excludeEnd("ide");
 //>>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);
 //>>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.";
 $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");
 //>>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);
 //>>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.";
 $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");
 //>>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);
 //>>excludeStart("ide", pragmas.excludeIdeData);
 $globals.SendNode.comment="I represent an message send node.";
 $globals.SendNode.comment="I represent an message send node.";
 //>>excludeEnd("ide");
 //>>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);
 //>>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).";
 $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");
 //>>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);
 //>>excludeStart("ide", pragmas.excludeIdeData);
 $globals.ValueNode.comment="I represent a value node.";
 $globals.ValueNode.comment="I represent a value node.";
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
@@ -3403,22 +3385,4 @@ messageSends: ["ifEmpty:", "source", "error:", "parse:"]
 }),
 }),
 $globals.CompiledMethod);
 $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'!
 Smalltalk createPackage: 'Compiler-AST'!
-DagParentNode subclass: #Node
+DagParentNode subclass: #ASTNode
 	instanceVariableNames: 'parent position source shouldBeInlined shouldBeAliased'
 	instanceVariableNames: 'parent position source shouldBeInlined shouldBeAliased'
 	package: 'Compiler-AST'!
 	package: 'Compiler-AST'!
-!Node commentStamp!
+!ASTNode commentStamp!
 I am the abstract root class of the abstract syntax tree.
 I am the abstract root class of the abstract syntax tree.
 
 
 Concrete classes should implement `#accept:` to allow visiting.
 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.!
 `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
 location: aLocation
 	self position: aLocation start line @ aLocation start column
 	self position: aLocation start line @ aLocation start column
@@ -92,7 +92,7 @@ source: aString
 	source := aString
 	source := aString
 ! !
 ! !
 
 
-!Node methodsFor: 'testing'!
+!ASTNode methodsFor: 'testing'!
 
 
 inPosition: aPoint
 inPosition: aPoint
 	^ (self positionStart <= aPoint and: [
 	^ (self positionStart <= aPoint and: [
@@ -133,10 +133,6 @@ isNavigationNode
 	^ false
 	^ false
 !
 !
 
 
-isNode
-	^ true
-!
-
 isReferenced
 isReferenced
 	"Answer true if the receiver is referenced by other nodes.
 	"Answer true if the receiver is referenced by other nodes.
 	Do not take sequences or assignments into account"
 	Do not take sequences or assignments into account"
@@ -186,7 +182,7 @@ subtreeNeedsAliasing
 		self dagChildren anySatisfy: [ :each | each subtreeNeedsAliasing ] ]
 		self dagChildren anySatisfy: [ :each | each subtreeNeedsAliasing ] ]
 ! !
 ! !
 
 
-Node subclass: #AssignmentNode
+ASTNode subclass: #AssignmentNode
 	instanceVariableNames: 'left right'
 	instanceVariableNames: 'left right'
 	package: 'Compiler-AST'!
 	package: 'Compiler-AST'!
 !AssignmentNode commentStamp!
 !AssignmentNode commentStamp!
@@ -230,7 +226,7 @@ acceptDagVisitor: aVisitor
 	^ aVisitor visitAssignmentNode: self
 	^ aVisitor visitAssignmentNode: self
 ! !
 ! !
 
 
-Node subclass: #BlockNode
+ASTNode subclass: #BlockNode
 	instanceVariableNames: 'parameters scope'
 	instanceVariableNames: 'parameters scope'
 	package: 'Compiler-AST'!
 	package: 'Compiler-AST'!
 !BlockNode commentStamp!
 !BlockNode commentStamp!
@@ -270,7 +266,7 @@ acceptDagVisitor: aVisitor
 	^ aVisitor visitBlockNode: self
 	^ aVisitor visitBlockNode: self
 ! !
 ! !
 
 
-Node subclass: #CascadeNode
+ASTNode subclass: #CascadeNode
 	instanceVariableNames: 'receiver'
 	instanceVariableNames: 'receiver'
 	package: 'Compiler-AST'!
 	package: 'Compiler-AST'!
 !CascadeNode commentStamp!
 !CascadeNode commentStamp!
@@ -302,7 +298,7 @@ acceptDagVisitor: aVisitor
 	^ aVisitor visitCascadeNode: self
 	^ aVisitor visitCascadeNode: self
 ! !
 ! !
 
 
-Node subclass: #DynamicArrayNode
+ASTNode subclass: #DynamicArrayNode
 	instanceVariableNames: ''
 	instanceVariableNames: ''
 	package: 'Compiler-AST'!
 	package: 'Compiler-AST'!
 !DynamicArrayNode commentStamp!
 !DynamicArrayNode commentStamp!
@@ -314,7 +310,7 @@ acceptDagVisitor: aVisitor
 	^ aVisitor visitDynamicArrayNode: self
 	^ aVisitor visitDynamicArrayNode: self
 ! !
 ! !
 
 
-Node subclass: #DynamicDictionaryNode
+ASTNode subclass: #DynamicDictionaryNode
 	instanceVariableNames: ''
 	instanceVariableNames: ''
 	package: 'Compiler-AST'!
 	package: 'Compiler-AST'!
 !DynamicDictionaryNode commentStamp!
 !DynamicDictionaryNode commentStamp!
@@ -326,7 +322,7 @@ acceptDagVisitor: aVisitor
 	^ aVisitor visitDynamicDictionaryNode: self
 	^ aVisitor visitDynamicDictionaryNode: self
 ! !
 ! !
 
 
-Node subclass: #JSStatementNode
+ASTNode subclass: #JSStatementNode
 	instanceVariableNames: ''
 	instanceVariableNames: ''
 	package: 'Compiler-AST'!
 	package: 'Compiler-AST'!
 !JSStatementNode commentStamp!
 !JSStatementNode commentStamp!
@@ -348,7 +344,7 @@ acceptDagVisitor: aVisitor
 	^ aVisitor visitJSStatementNode: self
 	^ aVisitor visitJSStatementNode: self
 ! !
 ! !
 
 
-Node subclass: #MethodNode
+ASTNode subclass: #MethodNode
 	instanceVariableNames: 'selector arguments source scope classReferences sendIndexes'
 	instanceVariableNames: 'selector arguments source scope classReferences sendIndexes'
 	package: 'Compiler-AST'!
 	package: 'Compiler-AST'!
 !MethodNode commentStamp!
 !MethodNode commentStamp!
@@ -427,7 +423,7 @@ acceptDagVisitor: aVisitor
 	^ aVisitor visitMethodNode: self
 	^ aVisitor visitMethodNode: self
 ! !
 ! !
 
 
-Node subclass: #ReturnNode
+ASTNode subclass: #ReturnNode
 	instanceVariableNames: 'scope'
 	instanceVariableNames: 'scope'
 	package: 'Compiler-AST'!
 	package: 'Compiler-AST'!
 !ReturnNode commentStamp!
 !ReturnNode commentStamp!
@@ -459,7 +455,7 @@ acceptDagVisitor: aVisitor
 	^ aVisitor visitReturnNode: self
 	^ aVisitor visitReturnNode: self
 ! !
 ! !
 
 
-Node subclass: #SendNode
+ASTNode subclass: #SendNode
 	instanceVariableNames: 'selector arguments receiver index'
 	instanceVariableNames: 'selector arguments receiver index'
 	package: 'Compiler-AST'!
 	package: 'Compiler-AST'!
 !SendNode commentStamp!
 !SendNode commentStamp!
@@ -567,7 +563,7 @@ acceptDagVisitor: aVisitor
 	^ aVisitor visitSendNode: self
 	^ aVisitor visitSendNode: self
 ! !
 ! !
 
 
-Node subclass: #SequenceNode
+ASTNode subclass: #SequenceNode
 	instanceVariableNames: 'temps scope'
 	instanceVariableNames: 'temps scope'
 	package: 'Compiler-AST'!
 	package: 'Compiler-AST'!
 !SequenceNode commentStamp!
 !SequenceNode commentStamp!
@@ -632,7 +628,7 @@ acceptDagVisitor: aVisitor
 	^ aVisitor visitBlockSequenceNode: self
 	^ aVisitor visitBlockSequenceNode: self
 ! !
 ! !
 
 
-Node subclass: #ValueNode
+ASTNode subclass: #ValueNode
 	instanceVariableNames: 'value'
 	instanceVariableNames: 'value'
 	package: 'Compiler-AST'!
 	package: 'Compiler-AST'!
 !ValueNode commentStamp!
 !ValueNode commentStamp!
@@ -806,9 +802,3 @@ ast
 	^ Smalltalk parse: self source
 	^ 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',
 protocol: '*Compiler-Interpreter',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return true;
+return false;
 
 
 },
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
-source: "isSteppingNode\x0a\x09^ true",
+source: "isSteppingNode\x0a\x09^ false",
 referencedClasses: [],
 referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
 messageSends: []
 messageSends: []
 }),
 }),
-$globals.AssignmentNode);
+$globals.ASTNode);
 
 
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
-selector: "isSteppingNode",
+selector: "nextSiblingNode:",
 protocol: '*Compiler-Interpreter',
 protocol: '*Compiler-Interpreter',
-fn: function (){
+fn: function (aNode){
 var self=this;
 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);
 //>>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: [],
 referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
-messageSends: []
+messageSends: ["at:ifAbsent:", "dagChildren", "+", "indexOf:"]
 }),
 }),
-$globals.BlockNode);
+$globals.ASTNode);
 
 
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
-selector: "nextSiblingNode:",
+selector: "isSteppingNode",
 protocol: '*Compiler-Interpreter',
 protocol: '*Compiler-Interpreter',
-fn: function (aNode){
+fn: function (){
 var self=this;
 var self=this;
-return nil;
+return true;
 
 
 },
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 //>>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: [],
 referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
 messageSends: []
 messageSends: []
 }),
 }),
-$globals.BlockNode);
+$globals.AssignmentNode);
 
 
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
@@ -3835,25 +3852,25 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
 messageSends: []
 messageSends: []
 }),
 }),
-$globals.DynamicArrayNode);
+$globals.BlockNode);
 
 
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
-selector: "isSteppingNode",
+selector: "nextSiblingNode:",
 protocol: '*Compiler-Interpreter',
 protocol: '*Compiler-Interpreter',
-fn: function (){
+fn: function (aNode){
 var self=this;
 var self=this;
-return true;
+return nil;
 
 
 },
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 //>>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: [],
 referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
 messageSends: []
 messageSends: []
 }),
 }),
-$globals.DynamicDictionaryNode);
+$globals.BlockNode);
 
 
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
@@ -3871,7 +3888,7 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
 messageSends: []
 messageSends: []
 }),
 }),
-$globals.JSStatementNode);
+$globals.DynamicArrayNode);
 
 
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
@@ -3879,52 +3896,35 @@ selector: "isSteppingNode",
 protocol: '*Compiler-Interpreter',
 protocol: '*Compiler-Interpreter',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return false;
+return true;
 
 
 },
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
-source: "isSteppingNode\x0a\x09^ false",
+source: "isSteppingNode\x0a\x09^ true",
 referencedClasses: [],
 referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
 messageSends: []
 messageSends: []
 }),
 }),
-$globals.Node);
+$globals.DynamicDictionaryNode);
 
 
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
-selector: "nextSiblingNode:",
+selector: "isSteppingNode",
 protocol: '*Compiler-Interpreter',
 protocol: '*Compiler-Interpreter',
-fn: function (aNode){
+fn: function (){
 var self=this;
 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);
 //>>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: [],
 referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
-messageSends: ["at:ifAbsent:", "dagChildren", "+", "indexOf:"]
+messageSends: []
 }),
 }),
-$globals.Node);
+$globals.JSStatementNode);
 
 
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({

+ 14 - 14
src/Compiler-Interpreter.st

@@ -974,6 +974,20 @@ visitSendNode: aNode
 		self increaseIndex ]
 		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'!
 !AssignmentNode methodsFor: '*Compiler-Interpreter'!
 
 
 isSteppingNode
 isSteppingNode
@@ -1012,20 +1026,6 @@ isSteppingNode
 	^ true
 	^ 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'!
 !SendNode methodsFor: '*Compiler-Interpreter'!
 
 
 isSteppingNode
 isSteppingNode