UNPKG

@ambers/lang

Version:

An implementation of the Smalltalk language that runs on top of the JS runtime.

1,760 lines (1,626 loc) 90.7 kB
define(["amber/boot", "require", "amber/core/Compiler-Core", "amber/core/Kernel-Dag", "amber/core/Kernel-Exceptions", "amber/core/Kernel-Methods", "amber/core/Kernel-Objects"], function($boot,requirejs){"use strict"; var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals; var $pkg = $core.addPackage("Compiler-AST"); $pkg.transport = {"type":"amd","amdNamespace":"amber/core"}; $core.addClass("ASTNode", $globals.DagParentNode, "Compiler-AST"); $core.setSlots($globals.ASTNode, ["parent", "position", "source"]); //>>excludeStart("ide", pragmas.excludeIdeData); $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({ selector: "inPosition:", protocol: "testing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aPoint"], source: "inPosition: aPoint\x0a\x09^ (self positionStart <= aPoint and: [\x0a\x09\x09self positionEnd >= aPoint ])", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["and:", "<=", "positionStart", ">=", "positionEnd"] }, function ($methodClass){ return function (aPoint){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); if($core.assert($recv($self._positionStart()).__lt_eq(aPoint))){ return $recv($self._positionEnd()).__gt_eq(aPoint); } else { return false; } //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"inPosition:",{aPoint:aPoint})}); //>>excludeEnd("ctx"); }; }), $globals.ASTNode); $core.addMethod( $core.method({ selector: "isNavigationNode", protocol: "testing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "isNavigationNode\x0a\x09\x22Answer true if the node can be navigated to\x22\x0a\x09\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: "isReturnNode", protocol: "testing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "isReturnNode\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: "location:", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aLocation"], source: "location: aLocation\x0a\x09self position: aLocation start line @ aLocation start column", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["position:", "@", "line", "start", "column"] }, function ($methodClass){ return function (aLocation){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._position_($recv($recv([$recv(aLocation)._start() //>>excludeStart("ctx", pragmas.excludeDebugContexts); ,$ctx1.sendIdx["start"]=1 //>>excludeEnd("ctx"); ][0])._line()).__at($recv($recv(aLocation)._start())._column())); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"location:",{aLocation:aLocation})}); //>>excludeEnd("ctx"); }; }), $globals.ASTNode); $core.addMethod( $core.method({ selector: "navigationNodeAt:ifAbsent:", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aPoint", "aBlock"], source: "navigationNodeAt: aPoint ifAbsent: aBlock\x0a\x09\x22Answer the navigation node in the receiver's tree at aPoint \x0a\x09or nil if no navigation node was found.\x0a\x09\x0a\x09See `node >> isNaviationNode`\x22\x0a\x09\x0a\x09| children |\x0a\x09\x0a\x09children := self allDagChildren select: [ :each | \x0a\x09\x09each isNavigationNode and: [ each inPosition: aPoint ] ].\x0a\x09\x0a\x09children ifEmpty: [ ^ aBlock value ].\x0a\x09\x0a\x09^ (children asArray sort: [ :a :b | \x0a\x09\x09(a positionStart dist: aPoint) <= \x0a\x09\x09(b positionStart dist: aPoint) ]) first", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["select:", "allDagChildren", "and:", "isNavigationNode", "inPosition:", "ifEmpty:", "value", "first", "sort:", "asArray", "<=", "dist:", "positionStart"] }, function ($methodClass){ return function (aPoint,aBlock){ var self=this,$self=this; var children; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $early={}; try { children=$recv($self._allDagChildren())._select_((function(each){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); if($core.assert($recv(each)._isNavigationNode())){ return $recv(each)._inPosition_(aPoint); } else { return false; } //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)}); //>>excludeEnd("ctx"); })); $recv(children)._ifEmpty_((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); throw $early=[$recv(aBlock)._value()]; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)}); //>>excludeEnd("ctx"); })); return $recv($recv($recv(children)._asArray())._sort_((function(a,b){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); return $recv([$recv([$recv(a)._positionStart() //>>excludeStart("ctx", pragmas.excludeDebugContexts); ,$ctx2.sendIdx["positionStart"]=1 //>>excludeEnd("ctx"); ][0])._dist_(aPoint) //>>excludeStart("ctx", pragmas.excludeDebugContexts); ,$ctx2.sendIdx["dist:"]=1 //>>excludeEnd("ctx"); ][0]).__lt_eq($recv($recv(b)._positionStart())._dist_(aPoint)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,4)}); //>>excludeEnd("ctx"); })))._first(); } 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})}); //>>excludeEnd("ctx"); }; }), $globals.ASTNode); $core.addMethod( $core.method({ selector: "parent", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "parent\x0a\x09^ parent", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (){ var self=this,$self=this; return $self.parent; }; }), $globals.ASTNode); $core.addMethod( $core.method({ selector: "parent:", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aNode"], source: "parent: aNode\x0a\x09parent := aNode", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (aNode){ var self=this,$self=this; $self.parent=aNode; return self; }; }), $globals.ASTNode); $core.addMethod( $core.method({ selector: "position", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "position\x0a\x09\x22answer the line and column of the receiver in the source code\x22\x0a\x09\x0a\x09^ position ifNil: [ \x0a\x09\x09self parent ifNotNil: [ :node | node position ] ]", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["ifNil:", "ifNotNil:", "parent", "position"] }, function ($methodClass){ return function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $1,$2; $1=$self.position; if($1 == null || $1.a$nil){ $2=$self._parent(); if($2 == null || $2.a$nil){ return $2; } else { var node; node=$2; return $recv(node)._position(); } } else { return $1; } //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"position",{})}); //>>excludeEnd("ctx"); }; }), $globals.ASTNode); $core.addMethod( $core.method({ selector: "position:", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aPosition"], source: "position: aPosition\x0a\x09position := aPosition", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (aPosition){ var self=this,$self=this; $self.position=aPosition; return self; }; }), $globals.ASTNode); $core.addMethod( $core.method({ selector: "positionEnd", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "positionEnd\x0a\x09^ self positionStart + ((self source lines size - 1) @ (self source lines last size - 1))", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["+", "positionStart", "@", "-", "size", "lines", "source", "last"] }, function ($methodClass){ return function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $recv($self._positionStart()).__plus($recv([$recv([$recv([$recv([$self._source() //>>excludeStart("ctx", pragmas.excludeDebugContexts); ,$ctx1.sendIdx["source"]=1 //>>excludeEnd("ctx"); ][0])._lines() //>>excludeStart("ctx", pragmas.excludeDebugContexts); ,$ctx1.sendIdx["lines"]=1 //>>excludeEnd("ctx"); ][0])._size() //>>excludeStart("ctx", pragmas.excludeDebugContexts); ,$ctx1.sendIdx["size"]=1 //>>excludeEnd("ctx"); ][0]).__minus((1)) //>>excludeStart("ctx", pragmas.excludeDebugContexts); ,$ctx1.sendIdx["-"]=1 //>>excludeEnd("ctx"); ][0]).__at($recv($recv($recv($recv($self._source())._lines())._last())._size()).__minus((1)))); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"positionEnd",{})}); //>>excludeEnd("ctx"); }; }), $globals.ASTNode); $core.addMethod( $core.method({ selector: "positionStart", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "positionStart\x0a\x09^ self position", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["position"] }, function ($methodClass){ return function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $self._position(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"positionStart",{})}); //>>excludeEnd("ctx"); }; }), $globals.ASTNode); $core.addMethod( $core.method({ selector: "size", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "size\x0a\x09^ self source size", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["size", "source"] }, function ($methodClass){ return function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $recv($self._source())._size(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"size",{})}); //>>excludeEnd("ctx"); }; }), $globals.ASTNode); $core.addMethod( $core.method({ selector: "source", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "source\x0a\x09^ source ifNil: [ '' ]", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["ifNil:"] }, function ($methodClass){ return function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $1; $1=$self.source; if($1 == null || $1.a$nil){ return ""; } else { return $1; } //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"source",{})}); //>>excludeEnd("ctx"); }; }), $globals.ASTNode); $core.addMethod( $core.method({ selector: "source:", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aString"], source: "source: aString\x0a\x09source := aString", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (aString){ var self=this,$self=this; $self.source=aString; return self; }; }), $globals.ASTNode); $core.addClass("ExpressionNode", $globals.ASTNode, "Compiler-AST"); $core.setSlots($globals.ExpressionNode, ["shouldBeAliased"]); //>>excludeStart("ide", pragmas.excludeIdeData); $globals.ExpressionNode.comment="I am the abstract root class for expression nodes."; //>>excludeEnd("ide"); $core.addMethod( $core.method({ selector: "isIdempotent", protocol: "testing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "isIdempotent\x0a\x09^ false", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (){ var self=this,$self=this; return false; }; }), $globals.ExpressionNode); $core.addMethod( $core.method({ selector: "isImmutable", protocol: "testing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "isImmutable\x0a\x09self deprecatedAPI: 'Use #isIdempotent instead.'.\x0a\x09^ self isIdempotent", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["deprecatedAPI:", "isIdempotent"] }, function ($methodClass){ return function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._deprecatedAPI_("Use #isIdempotent instead."); return $self._isIdempotent(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"isImmutable",{})}); //>>excludeEnd("ctx"); }; }), $globals.ExpressionNode); $core.addMethod( $core.method({ selector: "isSuper", protocol: "testing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "isSuper\x0a\x09^ false", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (){ var self=this,$self=this; return false; }; }), $globals.ExpressionNode); $core.addMethod( $core.method({ selector: "shouldBeAliased", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "shouldBeAliased\x0a\x09^ shouldBeAliased ifNil: [ false ]", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["ifNil:"] }, function ($methodClass){ return function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $1; $1=$self.shouldBeAliased; if($1 == null || $1.a$nil){ return false; } else { return $1; } //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"shouldBeAliased",{})}); //>>excludeEnd("ctx"); }; }), $globals.ExpressionNode); $core.addMethod( $core.method({ selector: "shouldBeAliased:", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aBoolean"], source: "shouldBeAliased: aBoolean\x0a\x09shouldBeAliased := aBoolean", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (aBoolean){ var self=this,$self=this; $self.shouldBeAliased=aBoolean; return self; }; }), $globals.ExpressionNode); $core.addMethod( $core.method({ selector: "withTail:", protocol: "building", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aCollection"], source: "withTail: aCollection\x0a\x09^ aCollection inject: self into: [\x0a\x09\x09:receiver :send | SendNode new\x0a\x09\x09\x09position: send position;\x0a\x09\x09\x09source: send source;\x0a\x09\x09\x09receiver: receiver;\x0a\x09\x09\x09selector: send selector;\x0a\x09\x09\x09arguments: send arguments;\x0a\x09\x09\x09yourself ]", referencedClasses: ["SendNode"], //>>excludeEnd("ide"); pragmas: [], messageSends: ["inject:into:", "position:", "new", "position", "source:", "source", "receiver:", "selector:", "selector", "arguments:", "arguments", "yourself"] }, function ($methodClass){ return function (aCollection){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $1; return $recv(aCollection)._inject_into_(self,(function(receiver,send){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); $1=$recv($globals.SendNode)._new(); $recv($1)._position_($recv(send)._position()); $recv($1)._source_($recv(send)._source()); $recv($1)._receiver_(receiver); $recv($1)._selector_($recv(send)._selector()); $recv($1)._arguments_($recv(send)._arguments()); return $recv($1)._yourself(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({receiver:receiver,send:send},$ctx1,1)}); //>>excludeEnd("ctx"); })); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"withTail:",{aCollection:aCollection})}); //>>excludeEnd("ctx"); }; }), $globals.ExpressionNode); $core.addClass("AssignmentNode", $globals.ExpressionNode, "Compiler-AST"); $core.setSlots($globals.AssignmentNode, ["left", "right"]); //>>excludeStart("ide", pragmas.excludeIdeData); $globals.AssignmentNode.comment="I represent an assignment node."; //>>excludeEnd("ide"); $core.addMethod( $core.method({ selector: "acceptDagVisitor:", protocol: "visiting", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aVisitor"], source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitAssignmentNode: self", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["visitAssignmentNode:"] }, function ($methodClass){ return function (aVisitor){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $recv(aVisitor)._visitAssignmentNode_(self); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})}); //>>excludeEnd("ctx"); }; }), $globals.AssignmentNode); $core.addMethod( $core.method({ selector: "dagChildren", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "dagChildren\x0a\x09^ { self left. self right }", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["left", "right"] }, function ($methodClass){ return function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return [$self._left(),$self._right()]; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"dagChildren",{})}); //>>excludeEnd("ctx"); }; }), $globals.AssignmentNode); $core.addMethod( $core.method({ selector: "left", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "left\x0a\x09^ left", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (){ var self=this,$self=this; return $self.left; }; }), $globals.AssignmentNode); $core.addMethod( $core.method({ selector: "left:", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aNode"], source: "left: aNode\x0a\x09left := aNode", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (aNode){ var self=this,$self=this; $self.left=aNode; return self; }; }), $globals.AssignmentNode); $core.addMethod( $core.method({ selector: "right", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "right\x0a\x09^ right", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (){ var self=this,$self=this; return $self.right; }; }), $globals.AssignmentNode); $core.addMethod( $core.method({ selector: "right:", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aNode"], source: "right: aNode\x0a\x09right := aNode", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (aNode){ var self=this,$self=this; $self.right=aNode; return self; }; }), $globals.AssignmentNode); $core.addClass("BlockNode", $globals.ExpressionNode, "Compiler-AST"); $core.setSlots($globals.BlockNode, ["parameters", "scope", "sequenceNode"]); //>>excludeStart("ide", pragmas.excludeIdeData); $globals.BlockNode.comment="I represent an block closure node."; //>>excludeEnd("ide"); $core.addMethod( $core.method({ selector: "acceptDagVisitor:", protocol: "visiting", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aVisitor"], source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitBlockNode: self", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["visitBlockNode:"] }, function ($methodClass){ return function (aVisitor){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $recv(aVisitor)._visitBlockNode_(self); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})}); //>>excludeEnd("ctx"); }; }), $globals.BlockNode); $core.addMethod( $core.method({ selector: "dagChild", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "dagChild\x0a\x09^ self sequenceNode", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["sequenceNode"] }, function ($methodClass){ return function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $self._sequenceNode(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"dagChild",{})}); //>>excludeEnd("ctx"); }; }), $globals.BlockNode); $core.addMethod( $core.method({ selector: "parameters", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "parameters\x0a\x09^ parameters ifNil: [ parameters := Array new ]", referencedClasses: ["Array"], //>>excludeEnd("ide"); pragmas: [], messageSends: ["ifNil:", "new"] }, function ($methodClass){ return function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $1; $1=$self.parameters; if($1 == null || $1.a$nil){ $self.parameters=$recv($globals.Array)._new(); return $self.parameters; } else { return $1; } //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"parameters",{})}); //>>excludeEnd("ctx"); }; }), $globals.BlockNode); $core.addMethod( $core.method({ selector: "parameters:", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aCollection"], source: "parameters: aCollection\x0a\x09parameters := aCollection", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (aCollection){ var self=this,$self=this; $self.parameters=aCollection; return self; }; }), $globals.BlockNode); $core.addMethod( $core.method({ selector: "scope", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "scope\x0a\x09^ scope", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (){ var self=this,$self=this; return $self.scope; }; }), $globals.BlockNode); $core.addMethod( $core.method({ selector: "scope:", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aLexicalScope"], source: "scope: aLexicalScope\x0a\x09scope := aLexicalScope", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (aLexicalScope){ var self=this,$self=this; $self.scope=aLexicalScope; return self; }; }), $globals.BlockNode); $core.addMethod( $core.method({ selector: "sequenceNode", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "sequenceNode\x0a\x09^ sequenceNode", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (){ var self=this,$self=this; return $self.sequenceNode; }; }), $globals.BlockNode); $core.addMethod( $core.method({ selector: "sequenceNode:", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["anObject"], source: "sequenceNode: anObject\x0a\x09sequenceNode := anObject", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (anObject){ var self=this,$self=this; $self.sequenceNode=anObject; return self; }; }), $globals.BlockNode); $core.addClass("CascadeNode", $globals.ExpressionNode, "Compiler-AST"); $core.setSlots($globals.CascadeNode, ["receiver"]); //>>excludeStart("ide", pragmas.excludeIdeData); $globals.CascadeNode.comment="I represent an cascade node."; //>>excludeEnd("ide"); $core.addMethod( $core.method({ selector: "acceptDagVisitor:", protocol: "visiting", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aVisitor"], source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitCascadeNode: self", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["visitCascadeNode:"] }, function ($methodClass){ return function (aVisitor){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $recv(aVisitor)._visitCascadeNode_(self); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})}); //>>excludeEnd("ctx"); }; }), $globals.CascadeNode); $core.addMethod( $core.method({ selector: "receiver", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "receiver\x0a\x09^ receiver", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (){ var self=this,$self=this; return $self.receiver; }; }), $globals.CascadeNode); $core.addMethod( $core.method({ selector: "receiver:", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aNode"], source: "receiver: aNode\x0a\x09receiver := aNode", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (aNode){ var self=this,$self=this; $self.receiver=aNode; return self; }; }), $globals.CascadeNode); $core.addClass("DynamicArrayNode", $globals.ExpressionNode, "Compiler-AST"); //>>excludeStart("ide", pragmas.excludeIdeData); $globals.DynamicArrayNode.comment="I represent an dynamic array node."; //>>excludeEnd("ide"); $core.addMethod( $core.method({ selector: "acceptDagVisitor:", protocol: "visiting", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aVisitor"], source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitDynamicArrayNode: self", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["visitDynamicArrayNode:"] }, function ($methodClass){ return function (aVisitor){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $recv(aVisitor)._visitDynamicArrayNode_(self); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})}); //>>excludeEnd("ctx"); }; }), $globals.DynamicArrayNode); $core.addClass("DynamicDictionaryNode", $globals.ExpressionNode, "Compiler-AST"); //>>excludeStart("ide", pragmas.excludeIdeData); $globals.DynamicDictionaryNode.comment="I represent an dynamic dictionary node."; //>>excludeEnd("ide"); $core.addMethod( $core.method({ selector: "acceptDagVisitor:", protocol: "visiting", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aVisitor"], source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitDynamicDictionaryNode: self", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["visitDynamicDictionaryNode:"] }, function ($methodClass){ return function (aVisitor){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $recv(aVisitor)._visitDynamicDictionaryNode_(self); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})}); //>>excludeEnd("ctx"); }; }), $globals.DynamicDictionaryNode); $core.addClass("SendNode", $globals.ExpressionNode, "Compiler-AST"); $core.setSlots($globals.SendNode, ["selector", "arguments", "receiver", "index", "javaScriptSelector", "argumentSwitcher", "isSideEffect"]); //>>excludeStart("ide", pragmas.excludeIdeData); $globals.SendNode.comment="I represent an message send node."; //>>excludeEnd("ide"); $core.addMethod( $core.method({ selector: "acceptDagVisitor:", protocol: "visiting", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aVisitor"], source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitSendNode: self", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["visitSendNode:"] }, function ($methodClass){ return function (aVisitor){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $recv(aVisitor)._visitSendNode_(self); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})}); //>>excludeEnd("ctx"); }; }), $globals.SendNode); $core.addMethod( $core.method({ selector: "argumentSwitcher", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "argumentSwitcher\x0a\x09^ argumentSwitcher", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (){ var self=this,$self=this; return $self.argumentSwitcher; }; }), $globals.SendNode); $core.addMethod( $core.method({ selector: "argumentSwitcher:", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aJSFunction"], source: "argumentSwitcher: aJSFunction\x0a\x09argumentSwitcher := aJSFunction", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (aJSFunction){ var self=this,$self=this; $self.argumentSwitcher=aJSFunction; return self; }; }), $globals.SendNode); $core.addMethod( $core.method({ selector: "arguments", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "arguments\x0a\x09^ arguments ifNil: [ arguments := #() ]", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["ifNil:"] }, function ($methodClass){ return function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $1; $1=$self.arguments; if($1 == null || $1.a$nil){ $self.arguments=[]; return $self.arguments; } else { return $1; } //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"arguments",{})}); //>>excludeEnd("ctx"); }; }), $globals.SendNode); $core.addMethod( $core.method({ selector: "arguments:", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aCollection"], source: "arguments: aCollection\x0a\x09arguments := aCollection", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (aCollection){ var self=this,$self=this; $self.arguments=aCollection; return self; }; }), $globals.SendNode); $core.addMethod( $core.method({ selector: "beSideEffect", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "beSideEffect\x0a\x09isSideEffect := true", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (){ var self=this,$self=this; $self.isSideEffect=true; return self; }; }), $globals.SendNode); $core.addMethod( $core.method({ selector: "dagChildren", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "dagChildren\x0a\x09self receiver ifNil: [ ^ self arguments copy ].\x0a\x09\x0a\x09^ self arguments copyWithFirst: self receiver", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["ifNil:", "receiver", "copy", "arguments", "copyWithFirst:"] }, function ($methodClass){ return function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $1; $1=[$self._receiver() //>>excludeStart("ctx", pragmas.excludeDebugContexts); ,$ctx1.sendIdx["receiver"]=1 //>>excludeEnd("ctx"); ][0]; if($1 == null || $1.a$nil){ return $recv([$self._arguments() //>>excludeStart("ctx", pragmas.excludeDebugContexts); ,$ctx1.sendIdx["arguments"]=1 //>>excludeEnd("ctx"); ][0])._copy(); } return $recv($self._arguments())._copyWithFirst_($self._receiver()); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"dagChildren",{})}); //>>excludeEnd("ctx"); }; }), $globals.SendNode); $core.addMethod( $core.method({ selector: "index", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "index\x0a\x09^ index", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (){ var self=this,$self=this; return $self.index; }; }), $globals.SendNode); $core.addMethod( $core.method({ selector: "index:", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["anInteger"], source: "index: anInteger\x0a\x09index := anInteger", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (anInteger){ var self=this,$self=this; $self.index=anInteger; return self; }; }), $globals.SendNode); $core.addMethod( $core.method({ selector: "isNavigationNode", protocol: "testing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "isNavigationNode\x0a\x09^ true", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (){ var self=this,$self=this; return true; }; }), $globals.SendNode); $core.addMethod( $core.method({ selector: "isSideEffect", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "isSideEffect\x0a\x09^ isSideEffect ifNil: [ false ]", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["ifNil:"] }, function ($methodClass){ return function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $1; $1=$self.isSideEffect; if($1 == null || $1.a$nil){ return false; } else { return $1; } //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"isSideEffect",{})}); //>>excludeEnd("ctx"); }; }), $globals.SendNode); $core.addMethod( $core.method({ selector: "javaScriptSelector", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "javaScriptSelector\x0a\x09^ javaScriptSelector", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (){ var self=this,$self=this; return $self.javaScriptSelector; }; }), $globals.SendNode); $core.addMethod( $core.method({ selector: "javaScriptSelector:", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aString"], source: "javaScriptSelector: aString\x0a\x09javaScriptSelector := aString", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (aString){ var self=this,$self=this; $self.javaScriptSelector=aString; return self; }; }), $globals.SendNode); $core.addMethod( $core.method({ selector: "navigationLink", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "navigationLink\x0a\x09^ self selector", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["selector"] }, function ($methodClass){ return function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $self._selector(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"navigationLink",{})}); //>>excludeEnd("ctx"); }; }), $globals.SendNode); $core.addMethod( $core.method({ selector: "receiver", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "receiver\x0a\x09^ receiver", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (){ var self=this,$self=this; return $self.receiver; }; }), $globals.SendNode); $core.addMethod( $core.method({ selector: "receiver:", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aNode"], source: "receiver: aNode\x0a\x09receiver := aNode", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (aNode){ var self=this,$self=this; $self.receiver=aNode; return self; }; }), $globals.SendNode); $core.addMethod( $core.method({ selector: "selector", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "selector\x0a\x09^ selector", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (){ var self=this,$self=this; return $self.selector; }; }), $globals.SendNode); $core.addMethod( $core.method({ selector: "selector:", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aString"], source: "selector: aString\x0a\x09selector := aString", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (aString){ var self=this,$self=this; $self.selector=aString; return self; }; }), $globals.SendNode); $core.addMethod( $core.method({ selector: "superSend", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "superSend\x0a\x09^ self receiver ifNil: [ false ] ifNotNil: [ :recv | recv isSuper ]", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["ifNil:ifNotNil:", "receiver", "isSuper"] }, function ($methodClass){ return function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $1; $1=$self._receiver(); if($1 == null || $1.a$nil){ return false; } else { var recv; recv=$1; return $recv(recv)._isSuper(); } //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"superSend",{})}); //>>excludeEnd("ctx"); }; }), $globals.SendNode); $core.addClass("ValueNode", $globals.ExpressionNode, "Compiler-AST"); $core.setSlots($globals.ValueNode, ["value"]); //>>excludeStart("ide", pragmas.excludeIdeData); $globals.ValueNode.comment="I represent a value node."; //>>excludeEnd("ide"); $core.addMethod( $core.method({ selector: "acceptDagVisitor:", protocol: "visiting", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aVisitor"], source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitValueNode: self", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["visitValueNode:"] }, function ($methodClass){ return function (aVisitor){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $recv(aVisitor)._visitValueNode_(self); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})}); //>>excludeEnd("ctx"); }; }), $globals.ValueNode); $core.addMethod( $core.method({ selector: "isIdempotent", protocol: "testing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "isIdempotent\x0a\x09^ self value isImmutable", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["isImmutable", "value"] }, function ($methodClass){ return function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $recv($self._value())._isImmutable(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"isIdempotent",{})}); //>>excludeEnd("ctx"); }; }), $globals.ValueNode); $core.addMethod( $core.method({ selector: "value", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "value\x0a\x09^ value", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (){ var self=this,$self=this; return $self.value; }; }), $globals.ValueNode); $core.addMethod( $core.method({ selector: "value:", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["anObject"], source: "value: anObject\x0a\x09value := anObject", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (anObject){ var self=this,$self=this; $self.value=anObject; return self; }; }), $globals.ValueNode); $core.addClass("VariableNode", $globals.ExpressionNode, "Compiler-AST"); $core.setSlots($globals.VariableNode, ["identifier", "assigned", "binding"]); //>>excludeStart("ide", pragmas.excludeIdeData); $globals.VariableNode.comment="I represent an variable node."; //>>excludeEnd("ide"); $core.addMethod( $core.method({ selector: "acceptDagVisitor:", protocol: "visiting", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aVisitor"], source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitVariableNode: self", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["visitVariableNode:"] }, function ($methodClass){ return function (aVisitor){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $recv(aVisitor)._visitVariableNode_(self); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})}); //>>excludeEnd("ctx"); }; }), $globals.VariableNode); $core.addMethod( $core.method({ selector: "alias", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "alias\x0a\x09^ self binding alias", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["alias", "binding"] }, function ($methodClass){ return function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $recv($self._binding())._alias(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"alias",{})}); //>>excludeEnd("ctx"); }; }), $globals.VariableNode); $core.addMethod( $core.method({ selector: "assigned", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "assigned\x0a\x09^ assigned ifNil: [ false ]", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["ifNil:"] }, function ($methodClass){ return function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $1; $1=$self.assigned; if($1 == null || $1.a$nil){ return false; } else { return $1; } //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"assigned",{})}); //>>excludeEnd("ctx"); }; }), $globals.VariableNode); $core.addMethod( $core.method({ selector: "assigned:", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aBoolean"], source: "assigned: aBoolean\x0a\x09assigned := aBoolean", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (aBoolean){ var self=this,$self=this; $self.assigned=aBoolean; return self; }; }), $globals.VariableNode); $core.addMethod( $core.method({ selector: "binding", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "binding\x0a\x09^ binding", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (){ var self=this,$self=this; return $self.binding; }; }), $globals.VariableNode); $core.addMethod( $core.method({ selector: "binding:", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aScopeVar"], source: "binding: aScopeVar\x0a\x09binding := aScopeVar", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (aScopeVar){ var self=this,$self=this; $self.binding=aScopeVar; return self; }; }), $globals.VariableNode); $core.addMethod( $core.method({ selector: "identifier", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "identifier\x0a\x09^ identifier", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (){ var self=this,$self=this; return $self.identifier; }; }), $globals.VariableNode); $core.addMethod( $core.method({ selector: "identifier:", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["anObject"], source: "identifier: anObject\x0a\x09identifier := anObject", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (anObject){ var self=this,$self=this; $self.identifier=anObject; return self; }; }), $globals.VariableNode); $core.addMethod( $core.method({ selector: "isAssignable", protocol: "testing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "isAssignable\x0a\x09^ self binding isAssignable", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["isAssignable", "binding"] }, function ($methodClass){ return function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $recv($self._binding())._isAssignable(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"isAssignable",{})}); //>>excludeEnd("ctx"); }; }), $globals.VariableNode); $core.addMethod( $core.method({ selector: "isIdempotent", protocol: "testing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "isIdempotent\x0a\x09^ self binding isIdempotent", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["isIdempotent", "binding"] }, function ($methodClass){ return function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $recv($self._binding())._isIdempotent(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"isIdempotent",{})}); //>>excludeEnd("ctx"); }; }), $globals.VariableNode); $core.addMethod( $core.method({ selector: "isImmutable", protocol: "testing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "isImmutable\x0a\x09self deprecatedAPI: 'Use #isIdempotent / #isAssignable not instead.'.\x0a\x09^ self isIdempotent \x22to be consistent with super\x22", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["deprecatedAPI:", "isIdempotent"] }, function ($methodClass){ return function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._deprecatedAPI_("Use #isIdempotent / #isAssignable not instead."); return $self._isIdempotent(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"isImmutable",{})}); //>>excludeEnd("ctx"); }; }), $globals.VariableNode); $core.addMethod( $core.method({ selector: "isNavigationNode", protocol: "testing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "isNavigationNode\x0a\x09^ true", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (){ var self=this,$self=this; return true; }; }), $globals.VariableNode); $core.addMethod( $core.method({ selector: "isSuper", protocol: "testing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "isSuper\x0a\x09^ self binding isSuper", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["isSuper", "binding"] }, function ($methodClass){ return function (){ var self=this,$self=this; //>>excludeStart("ctx", prag