smalltalk.addPackage('Compiler-AST', {}); smalltalk.addClass('Node', smalltalk.Object, ['nodes', 'shouldBeInlined', 'shouldBeAliased'], 'Compiler-AST'); smalltalk.addMethod( "_accept_", smalltalk.method({ selector: "accept:", fn: function (aVisitor) { var self=this; return smalltalk.send(aVisitor, "_visitNode_", [self]); return self;} }), smalltalk.Node); smalltalk.addMethod( "_addNode_", smalltalk.method({ selector: "addNode:", fn: function (aNode) { var self=this; smalltalk.send(smalltalk.send(self, "_nodes", []), "_add_", [aNode]); return self;} }), smalltalk.Node); smalltalk.addMethod( "_isAssignmentNode", smalltalk.method({ selector: "isAssignmentNode", fn: function () { var self=this; return false; return self;} }), smalltalk.Node); smalltalk.addMethod( "_isBlockNode", smalltalk.method({ selector: "isBlockNode", fn: function () { var self=this; return false; return self;} }), smalltalk.Node); smalltalk.addMethod( "_isBlockSequenceNode", smalltalk.method({ selector: "isBlockSequenceNode", fn: function () { var self=this; return false; return self;} }), smalltalk.Node); smalltalk.addMethod( "_isReturnNode", smalltalk.method({ selector: "isReturnNode", fn: function () { var self=this; return false; return self;} }), smalltalk.Node); smalltalk.addMethod( "_isSendNode", smalltalk.method({ selector: "isSendNode", fn: function () { var self=this; return false; return self;} }), smalltalk.Node); smalltalk.addMethod( "_isValueNode", smalltalk.method({ selector: "isValueNode", fn: function () { var self=this; return false; return self;} }), smalltalk.Node); smalltalk.addMethod( "_nodes", smalltalk.method({ selector: "nodes", fn: function () { var self=this; return (($receiver = self['@nodes']) == nil || $receiver == undefined) ? (function(){return (self['@nodes']=smalltalk.send((smalltalk.Array || Array), "_new", []));})() : $receiver; return self;} }), smalltalk.Node); smalltalk.addMethod( "_nodes_", smalltalk.method({ selector: "nodes:", fn: function (aCollection) { var self=this; (self['@nodes']=aCollection); return self;} }), smalltalk.Node); smalltalk.addMethod( "_shouldBeAliased", smalltalk.method({ selector: "shouldBeAliased", fn: function (){ var self=this; return (($receiver = self['@shouldBeAliased']) == nil || $receiver == undefined) ? (function(){return false;})() : $receiver; return self;} }), smalltalk.Node); smalltalk.addMethod( "_shouldBeAliased_", smalltalk.method({ selector: "shouldBeAliased:", fn: function (aBoolean){ var self=this; (self['@shouldBeAliased']=aBoolean); return self;} }), smalltalk.Node); smalltalk.addMethod( "_shouldBeInlined", smalltalk.method({ selector: "shouldBeInlined", fn: function () { var self=this; return (($receiver = self['@shouldBeInlined']) == nil || $receiver == undefined) ? (function(){return false;})() : $receiver; return self;} }), smalltalk.Node); smalltalk.addMethod( "_shouldBeInlined_", smalltalk.method({ selector: "shouldBeInlined:", fn: function (aBoolean) { var self=this; (self['@shouldBeInlined']=aBoolean); return self;} }), smalltalk.Node); smalltalk.addClass('AssignmentNode', smalltalk.Node, ['left', 'right'], 'Compiler-AST'); smalltalk.addMethod( "_accept_", smalltalk.method({ selector: "accept:", fn: function (aVisitor) { var self=this; return smalltalk.send(aVisitor, "_visitAssignmentNode_", [self]); return self;} }), smalltalk.AssignmentNode); smalltalk.addMethod( "_isAssignmentNode", smalltalk.method({ selector: "isAssignmentNode", fn: function () { var self=this; return true; return self;} }), smalltalk.AssignmentNode); smalltalk.addMethod( "_left", smalltalk.method({ selector: "left", fn: function () { var self=this; return self['@left']; return self;} }), smalltalk.AssignmentNode); smalltalk.addMethod( "_left_", smalltalk.method({ selector: "left:", fn: function (aNode) { var self=this; (self['@left']=aNode); return self;} }), smalltalk.AssignmentNode); smalltalk.addMethod( "_nodes", smalltalk.method({ selector: "nodes", fn: function () { var self=this; return smalltalk.send((smalltalk.Array || Array), "_with_with_", [smalltalk.send(self, "_left", []), smalltalk.send(self, "_right", [])]); return self;} }), smalltalk.AssignmentNode); smalltalk.addMethod( "_right", smalltalk.method({ selector: "right", fn: function () { var self=this; return self['@right']; return self;} }), smalltalk.AssignmentNode); smalltalk.addMethod( "_right_", smalltalk.method({ selector: "right:", fn: function (aNode) { var self=this; (self['@right']=aNode); return self;} }), smalltalk.AssignmentNode); smalltalk.addClass('BlockNode', smalltalk.Node, ['parameters', 'scope'], 'Compiler-AST'); smalltalk.addMethod( "_accept_", smalltalk.method({ selector: "accept:", fn: function (aVisitor) { var self=this; return smalltalk.send(aVisitor, "_visitBlockNode_", [self]); return self;} }), smalltalk.BlockNode); smalltalk.addMethod( "_isBlockNode", smalltalk.method({ selector: "isBlockNode", fn: function () { var self=this; return true; return self;} }), smalltalk.BlockNode); smalltalk.addMethod( "_parameters", smalltalk.method({ selector: "parameters", fn: function () { var self=this; return (($receiver = self['@parameters']) == nil || $receiver == undefined) ? (function(){return (self['@parameters']=smalltalk.send((smalltalk.Array || Array), "_new", []));})() : $receiver; return self;} }), smalltalk.BlockNode); smalltalk.addMethod( "_parameters_", smalltalk.method({ selector: "parameters:", fn: function (aCollection) { var self=this; (self['@parameters']=aCollection); return self;} }), smalltalk.BlockNode); smalltalk.addMethod( "_scope", smalltalk.method({ selector: "scope", fn: function () { var self=this; return self['@scope']; return self;} }), smalltalk.BlockNode); smalltalk.addMethod( "_scope_", smalltalk.method({ selector: "scope:", fn: function (aLexicalScope) { var self=this; (self['@scope']=aLexicalScope); return self;} }), smalltalk.BlockNode); smalltalk.addClass('CascadeNode', smalltalk.Node, ['receiver'], 'Compiler-AST'); smalltalk.addMethod( "_accept_", smalltalk.method({ selector: "accept:", fn: function (aVisitor) { var self=this; return smalltalk.send(aVisitor, "_visitCascadeNode_", [self]); return self;} }), smalltalk.CascadeNode); smalltalk.addMethod( "_receiver", smalltalk.method({ selector: "receiver", fn: function () { var self=this; return self['@receiver']; return self;} }), smalltalk.CascadeNode); smalltalk.addMethod( "_receiver_", smalltalk.method({ selector: "receiver:", fn: function (aNode) { var self=this; (self['@receiver']=aNode); return self;} }), smalltalk.CascadeNode); smalltalk.addClass('DynamicArrayNode', smalltalk.Node, [], 'Compiler-AST'); smalltalk.addMethod( "_accept_", smalltalk.method({ selector: "accept:", fn: function (aVisitor) { var self=this; return smalltalk.send(aVisitor, "_visitDynamicArrayNode_", [self]); return self;} }), smalltalk.DynamicArrayNode); smalltalk.addClass('DynamicDictionaryNode', smalltalk.Node, [], 'Compiler-AST'); smalltalk.addMethod( "_accept_", smalltalk.method({ selector: "accept:", fn: function (aVisitor) { var self=this; return smalltalk.send(aVisitor, "_visitDynamicDictionaryNode_", [self]); return self;} }), smalltalk.DynamicDictionaryNode); smalltalk.addClass('JSStatementNode', smalltalk.Node, ['source'], 'Compiler-AST'); smalltalk.addMethod( "_accept_", smalltalk.method({ selector: "accept:", fn: function (aVisitor) { var self=this; return smalltalk.send(aVisitor, "_visitJSStatementNode_", [self]); return self;} }), smalltalk.JSStatementNode); smalltalk.addMethod( "_source", smalltalk.method({ selector: "source", fn: function () { var self=this; return (($receiver = self['@source']) == nil || $receiver == undefined) ? (function(){return "";})() : $receiver; return self;} }), smalltalk.JSStatementNode); smalltalk.addMethod( "_source_", smalltalk.method({ selector: "source:", fn: function (aString) { var self=this; (self['@source']=aString); return self;} }), smalltalk.JSStatementNode); smalltalk.addClass('MethodNode', smalltalk.Node, ['selector', 'arguments', 'source', 'scope', 'classReferences', 'messageSends'], 'Compiler-AST'); smalltalk.addMethod( "_accept_", smalltalk.method({ selector: "accept:", fn: function (aVisitor) { var self=this; return smalltalk.send(aVisitor, "_visitMethodNode_", [self]); return self;} }), smalltalk.MethodNode); smalltalk.addMethod( "_arguments", smalltalk.method({ selector: "arguments", fn: function () { var self=this; return (($receiver = self['@arguments']) == nil || $receiver == undefined) ? (function(){return [];})() : $receiver; return self;} }), smalltalk.MethodNode); smalltalk.addMethod( "_arguments_", smalltalk.method({ selector: "arguments:", fn: function (aCollection) { var self=this; (self['@arguments']=aCollection); return self;} }), smalltalk.MethodNode); smalltalk.addMethod( "_classReferences", smalltalk.method({ selector: "classReferences", fn: function () { var self=this; return self['@classReferences']; return self;} }), smalltalk.MethodNode); smalltalk.addMethod( "_classReferences_", smalltalk.method({ selector: "classReferences:", fn: function (aCollection) { var self=this; (self['@classReferences']=aCollection); return self;} }), smalltalk.MethodNode); smalltalk.addMethod( "_messageSends", smalltalk.method({ selector: "messageSends", fn: function () { var self=this; return self['@messageSends']; return self;} }), smalltalk.MethodNode); smalltalk.addMethod( "_messageSends_", smalltalk.method({ selector: "messageSends:", fn: function (aCollection) { var self=this; (self['@messageSends']=aCollection); return self;} }), smalltalk.MethodNode); smalltalk.addMethod( "_scope", smalltalk.method({ selector: "scope", fn: function () { var self=this; return self['@scope']; return self;} }), smalltalk.MethodNode); smalltalk.addMethod( "_scope_", smalltalk.method({ selector: "scope:", fn: function (aMethodScope) { var self=this; (self['@scope']=aMethodScope); return self;} }), smalltalk.MethodNode); smalltalk.addMethod( "_selector", smalltalk.method({ selector: "selector", fn: function () { var self=this; return self['@selector']; return self;} }), smalltalk.MethodNode); smalltalk.addMethod( "_selector_", smalltalk.method({ selector: "selector:", fn: function (aString) { var self=this; (self['@selector']=aString); return self;} }), smalltalk.MethodNode); smalltalk.addMethod( "_source", smalltalk.method({ selector: "source", fn: function () { var self=this; return self['@source']; return self;} }), smalltalk.MethodNode); smalltalk.addMethod( "_source_", smalltalk.method({ selector: "source:", fn: function (aString) { var self=this; (self['@source']=aString); return self;} }), smalltalk.MethodNode); smalltalk.addClass('ReturnNode', smalltalk.Node, ['scope'], 'Compiler-AST'); smalltalk.addMethod( "_accept_", smalltalk.method({ selector: "accept:", fn: function (aVisitor) { var self=this; return smalltalk.send(aVisitor, "_visitReturnNode_", [self]); return self;} }), smalltalk.ReturnNode); smalltalk.addMethod( "_isReturnNode", smalltalk.method({ selector: "isReturnNode", fn: function () { var self=this; return true; return self;} }), smalltalk.ReturnNode); smalltalk.addMethod( "_nonLocalReturn", smalltalk.method({ selector: "nonLocalReturn", fn: function () { var self=this; return smalltalk.send(smalltalk.send(smalltalk.send(self, "_scope", []), "_isMethodScope", []), "_not", []); return self;} }), smalltalk.ReturnNode); smalltalk.addMethod( "_scope", smalltalk.method({ selector: "scope", fn: function () { var self=this; return self['@scope']; return self;} }), smalltalk.ReturnNode); smalltalk.addMethod( "_scope_", smalltalk.method({ selector: "scope:", fn: function (aLexicalScope) { var self=this; (self['@scope']=aLexicalScope); return self;} }), smalltalk.ReturnNode); smalltalk.addClass('SendNode', smalltalk.Node, ['selector', 'arguments', 'receiver', 'superSend', 'index'], 'Compiler-AST'); smalltalk.addMethod( "_accept_", smalltalk.method({ selector: "accept:", fn: function (aVisitor) { var self=this; return smalltalk.send(aVisitor, "_visitSendNode_", [self]); return self;} }), smalltalk.SendNode); smalltalk.addMethod( "_arguments", smalltalk.method({ selector: "arguments", fn: function () { var self=this; return (($receiver = self['@arguments']) == nil || $receiver == undefined) ? (function(){return (self['@arguments']=[]);})() : $receiver; return self;} }), smalltalk.SendNode); smalltalk.addMethod( "_arguments_", smalltalk.method({ selector: "arguments:", fn: function (aCollection) { var self=this; (self['@arguments']=aCollection); return self;} }), smalltalk.SendNode); smalltalk.addMethod( "_cascadeNodeWithMessages_", smalltalk.method({ selector: "cascadeNodeWithMessages:", fn: function (aCollection) { var self=this; var first=nil; (first=(function($rec){smalltalk.send($rec, "_selector_", [smalltalk.send(self, "_selector", [])]);smalltalk.send($rec, "_arguments_", [smalltalk.send(self, "_arguments", [])]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send((smalltalk.SendNode || SendNode), "_new", []))); return (function($rec){smalltalk.send($rec, "_receiver_", [smalltalk.send(self, "_receiver", [])]);smalltalk.send($rec, "_nodes_", [smalltalk.send(smalltalk.send((smalltalk.Array || Array), "_with_", [first]), "__comma", [aCollection])]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send((smalltalk.CascadeNode || CascadeNode), "_new", [])); return self;} }), smalltalk.SendNode); smalltalk.addMethod( "_index", smalltalk.method({ selector: "index", fn: function () { var self=this; return self['@index']; return self;} }), smalltalk.SendNode); smalltalk.addMethod( "_index_", smalltalk.method({ selector: "index:", fn: function (anInteger) { var self=this; (self['@index']=anInteger); return self;} }), smalltalk.SendNode); smalltalk.addMethod( "_isSendNode", smalltalk.method({ selector: "isSendNode", fn: function () { var self=this; return true; return self;} }), smalltalk.SendNode); smalltalk.addMethod( "_nodes", smalltalk.method({ selector: "nodes", fn: function () { var self=this; return (function($rec){smalltalk.send($rec, "_add_", [smalltalk.send(self, "_receiver", [])]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send((smalltalk.Array || Array), "_withAll_", [smalltalk.send(self, "_arguments", [])])); return self;} }), smalltalk.SendNode); smalltalk.addMethod( "_receiver", smalltalk.method({ selector: "receiver", fn: function () { var self=this; return self['@receiver']; return self;} }), smalltalk.SendNode); smalltalk.addMethod( "_receiver_", smalltalk.method({ selector: "receiver:", fn: function (aNode) { var self=this; (self['@receiver']=aNode); return self;} }), smalltalk.SendNode); smalltalk.addMethod( "_selector", smalltalk.method({ selector: "selector", fn: function () { var self=this; return self['@selector']; return self;} }), smalltalk.SendNode); smalltalk.addMethod( "_selector_", smalltalk.method({ selector: "selector:", fn: function (aString) { var self=this; (self['@selector']=aString); return self;} }), smalltalk.SendNode); smalltalk.addMethod( "_superSend", smalltalk.method({ selector: "superSend", fn: function () { var self=this; return (($receiver = self['@superSend']) == nil || $receiver == undefined) ? (function(){return false;})() : $receiver; return self;} }), smalltalk.SendNode); smalltalk.addMethod( "_superSend_", smalltalk.method({ selector: "superSend:", fn: function (aBoolean) { var self=this; (self['@superSend']=aBoolean); return self;} }), smalltalk.SendNode); smalltalk.addMethod( "_valueForReceiver_", smalltalk.method({ selector: "valueForReceiver:", fn: function (anObject) { var self=this; return (function($rec){smalltalk.send($rec, "_receiver_", [(($receiver = smalltalk.send(self, "_receiver", [])) == nil || $receiver == undefined) ? (function(){return anObject;})() : (function(){return smalltalk.send(smalltalk.send(self, "_receiver", []), "_valueForReceiver_", [anObject]);})()]);smalltalk.send($rec, "_selector_", [smalltalk.send(self, "_selector", [])]);smalltalk.send($rec, "_arguments_", [smalltalk.send(self, "_arguments", [])]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send((smalltalk.SendNode || SendNode), "_new", [])); return self;} }), smalltalk.SendNode); smalltalk.addClass('SequenceNode', smalltalk.Node, ['temps', 'scope'], 'Compiler-AST'); smalltalk.addMethod( "_accept_", smalltalk.method({ selector: "accept:", fn: function (aVisitor) { var self=this; return smalltalk.send(aVisitor, "_visitSequenceNode_", [self]); return self;} }), smalltalk.SequenceNode); smalltalk.addMethod( "_asBlockSequenceNode", smalltalk.method({ selector: "asBlockSequenceNode", fn: function () { var self=this; return (function($rec){smalltalk.send($rec, "_nodes_", [smalltalk.send(self, "_nodes", [])]);smalltalk.send($rec, "_temps_", [smalltalk.send(self, "_temps", [])]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send((smalltalk.BlockSequenceNode || BlockSequenceNode), "_new", [])); return self;} }), smalltalk.SequenceNode); smalltalk.addMethod( "_scope", smalltalk.method({ selector: "scope", fn: function () { var self=this; return self['@scope']; return self;} }), smalltalk.SequenceNode); smalltalk.addMethod( "_scope_", smalltalk.method({ selector: "scope:", fn: function (aLexicalScope) { var self=this; (self['@scope']=aLexicalScope); return self;} }), smalltalk.SequenceNode); smalltalk.addMethod( "_temps", smalltalk.method({ selector: "temps", fn: function () { var self=this; return (($receiver = self['@temps']) == nil || $receiver == undefined) ? (function(){return [];})() : $receiver; return self;} }), smalltalk.SequenceNode); smalltalk.addMethod( "_temps_", smalltalk.method({ selector: "temps:", fn: function (aCollection) { var self=this; (self['@temps']=aCollection); return self;} }), smalltalk.SequenceNode); smalltalk.addClass('BlockSequenceNode', smalltalk.SequenceNode, [], 'Compiler-AST'); smalltalk.addMethod( "_accept_", smalltalk.method({ selector: "accept:", fn: function (aVisitor) { var self=this; return smalltalk.send(aVisitor, "_visitBlockSequenceNode_", [self]); return self;} }), smalltalk.BlockSequenceNode); smalltalk.addMethod( "_isBlockSequenceNode", smalltalk.method({ selector: "isBlockSequenceNode", fn: function () { var self=this; return true; return self;} }), smalltalk.BlockSequenceNode); smalltalk.addClass('ValueNode', smalltalk.Node, ['value'], 'Compiler-AST'); smalltalk.addMethod( "_accept_", smalltalk.method({ selector: "accept:", fn: function (aVisitor) { var self=this; return smalltalk.send(aVisitor, "_visitValueNode_", [self]); return self;} }), smalltalk.ValueNode); smalltalk.addMethod( "_isValueNode", smalltalk.method({ selector: "isValueNode", fn: function () { var self=this; return true; return self;} }), smalltalk.ValueNode); smalltalk.addMethod( "_value", smalltalk.method({ selector: "value", fn: function () { var self=this; return self['@value']; return self;} }), smalltalk.ValueNode); smalltalk.addMethod( "_value_", smalltalk.method({ selector: "value:", fn: function (anObject) { var self=this; (self['@value']=anObject); return self;} }), smalltalk.ValueNode); smalltalk.addClass('VariableNode', smalltalk.ValueNode, ['assigned', 'binding'], 'Compiler-AST'); smalltalk.addMethod( "_accept_", smalltalk.method({ selector: "accept:", fn: function (aVisitor) { var self=this; return smalltalk.send(aVisitor, "_visitVariableNode_", [self]); return self;} }), smalltalk.VariableNode); smalltalk.addMethod( "_alias", smalltalk.method({ selector: "alias", fn: function () { var self=this; return smalltalk.send(smalltalk.send(self, "_binding", []), "_alias", []); return self;} }), smalltalk.VariableNode); smalltalk.addMethod( "_assigned", smalltalk.method({ selector: "assigned", fn: function () { var self=this; return (($receiver = self['@assigned']) == nil || $receiver == undefined) ? (function(){return false;})() : $receiver; return self;} }), smalltalk.VariableNode); smalltalk.addMethod( "_assigned_", smalltalk.method({ selector: "assigned:", fn: function (aBoolean) { var self=this; (self['@assigned']=aBoolean); return self;} }), smalltalk.VariableNode); smalltalk.addMethod( "_beAssigned", smalltalk.method({ selector: "beAssigned", fn: function () { var self=this; smalltalk.send(smalltalk.send(self, "_binding", []), "_validateAssignment", []); (self['@assigned']=true); return self;} }), smalltalk.VariableNode); smalltalk.addMethod( "_binding", smalltalk.method({ selector: "binding", fn: function () { var self=this; return self['@binding']; return self;} }), smalltalk.VariableNode); smalltalk.addMethod( "_binding_", smalltalk.method({ selector: "binding:", fn: function (aScopeVar) { var self=this; (self['@binding']=aScopeVar); return self;} }), smalltalk.VariableNode); smalltalk.addClass('ClassReferenceNode', smalltalk.VariableNode, [], 'Compiler-AST'); smalltalk.addMethod( "_accept_", smalltalk.method({ selector: "accept:", fn: function (aVisitor) { var self=this; return smalltalk.send(aVisitor, "_visitClassReferenceNode_", [self]); return self;} }), smalltalk.ClassReferenceNode);