Browse Source

Pragmas in .js files.

Herby Vojčík 5 years ago
parent
commit
c4f2e21026

File diff suppressed because it is too large
+ 53 - 0
cli/src/AmberCli.js


File diff suppressed because it is too large
+ 126 - 0
lang/src/Compiler-AST.js


+ 49 - 0
lang/src/Compiler-Core.js

@@ -35,6 +35,7 @@ args: ["aNode"],
 source: "compileNode: aNode\x0a\x09^ self transformers\x0a\x09\x09inject: aNode\x0a\x09\x09into: [ :input :transformer | transformer value: input ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["inject:into:", "transformers", "value:"]
 }),
 $globals.AbstractCodeGenerator);
@@ -53,6 +54,7 @@ args: [],
 source: "currentClass\x0a\x09^ currentClass",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.AbstractCodeGenerator);
@@ -72,6 +74,7 @@ args: ["aClass"],
 source: "currentClass: aClass\x0a\x09currentClass := aClass",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.AbstractCodeGenerator);
@@ -90,6 +93,7 @@ args: [],
 source: "currentPackage\x0a\x09^ currentPackage",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.AbstractCodeGenerator);
@@ -109,6 +113,7 @@ args: ["anObject"],
 source: "currentPackage: anObject\x0a\x09currentPackage := anObject",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.AbstractCodeGenerator);
@@ -132,6 +137,7 @@ args: [],
 source: "pseudoVariables\x0a\x09^ Smalltalk pseudoVariableNames",
 referencedClasses: ["Smalltalk"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["pseudoVariableNames"]
 }),
 $globals.AbstractCodeGenerator);
@@ -161,6 +167,7 @@ args: [],
 source: "source\x0a\x09^ source ifNil: [ '' ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNil:"]
 }),
 $globals.AbstractCodeGenerator);
@@ -180,6 +187,7 @@ args: ["aString"],
 source: "source: aString\x0a\x09source := aString",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.AbstractCodeGenerator);
@@ -213,6 +221,7 @@ args: [],
 source: "transformers\x0a\x09| dict |\x0a\x09dict := self transformersDictionary.\x0a\x09^ dict keys asArray sort collect: [ :each | dict at: each ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["transformersDictionary", "collect:", "sort", "asArray", "keys", "at:"]
 }),
 $globals.AbstractCodeGenerator);
@@ -237,6 +246,7 @@ args: [],
 source: "transformersDictionary\x0a\x09self subclassResponsibility",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["subclassResponsibility"]
 }),
 $globals.AbstractCodeGenerator);
@@ -266,6 +276,7 @@ args: [],
 source: "earlyAstPragmator\x0a\x09^ AstEarlyPragmator new",
 referencedClasses: ["AstEarlyPragmator"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["new"]
 }),
 $globals.CodeGenerator);
@@ -292,6 +303,7 @@ args: [],
 source: "irTranslator\x0a\x09^ self irTranslatorClass new\x0a\x09\x09currentClass: self currentClass;\x0a\x09\x09yourself",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["currentClass:", "new", "irTranslatorClass", "currentClass", "yourself"]
 }),
 $globals.CodeGenerator);
@@ -310,6 +322,7 @@ args: [],
 source: "irTranslatorClass\x0a\x09^ IRJSTranslator",
 referencedClasses: ["IRJSTranslator"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.CodeGenerator);
@@ -336,6 +349,7 @@ args: [],
 source: "semanticAnalyzer\x0a\x09^ (SemanticAnalyzer on: self currentClass)\x0a\x09\x09thePackage: self currentPackage;\x0a\x09\x09yourself",
 referencedClasses: ["SemanticAnalyzer"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["thePackage:", "on:", "currentClass", "currentPackage", "yourself"]
 }),
 $globals.CodeGenerator);
@@ -380,6 +394,7 @@ args: [],
 source: "transformersDictionary\x0a\x09^ transformersDictionary ifNil: [ transformersDictionary := Dictionary new\x0a\x09\x09at: '1000-earlyPragmas' put: self earlyAstPragmator;\x0a\x09\x09at: '2000-semantic' put: self semanticAnalyzer;\x0a\x09\x09at: '5000-astToIr' put: self translator;\x0a\x09\x09at: '8000-irToJs' put: self irTranslator;\x0a\x09\x09yourself ]",
 referencedClasses: ["Dictionary"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNil:", "at:put:", "new", "earlyAstPragmator", "semanticAnalyzer", "translator", "irTranslator", "yourself"]
 }),
 $globals.CodeGenerator);
@@ -407,6 +422,7 @@ args: [],
 source: "translator\x0a\x09^ IRASTTranslator new\x0a\x09\x09source: self source;\x0a\x09\x09theClass: self currentClass;\x0a\x09\x09yourself",
 referencedClasses: ["IRASTTranslator"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["source:", "new", "source", "theClass:", "currentClass", "yourself"]
 }),
 $globals.CodeGenerator);
@@ -448,6 +464,7 @@ args: ["aString", "aClass", "anotherString"],
 source: "ast: aString forClass: aClass protocol: anotherString\x0a\x09self\x0a\x09\x09source: aString;\x0a\x09\x09forClass: aClass protocol: anotherString.\x0a\x0a\x09self codeGenerator transformersDictionary at: '2500-astCheckpoint' put: [ :x | ^x ].\x0a\x09\x0a\x09self compileNode: (self parse: aString).\x0a\x0a\x09CompilerError signal: 'AST transformation failed.'",
 referencedClasses: ["CompilerError"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["source:", "forClass:protocol:", "at:put:", "transformersDictionary", "codeGenerator", "compileNode:", "parse:", "signal:"]
 }),
 $globals.Compiler);
@@ -467,6 +484,7 @@ args: [],
 source: "cleanCodeGenerator\x0a\x09codeGenerator := nil",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.Compiler);
@@ -501,6 +519,7 @@ args: [],
 source: "codeGenerator\x0a\x09^ codeGenerator ifNil: [ codeGenerator := self codeGeneratorClass new\x0a\x09\x09\x09source: self source;\x0a\x09\x09\x09currentClass: self currentClass;\x0a\x09\x09\x09currentPackage: self currentPackage;\x0a\x09\x09\x09yourself ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNil:", "source:", "new", "codeGeneratorClass", "source", "currentClass:", "currentClass", "currentPackage:", "currentPackage", "yourself"]
 }),
 $globals.Compiler);
@@ -530,6 +549,7 @@ args: [],
 source: "codeGeneratorClass\x0a\x09^ codeGeneratorClass ifNil: [ InliningCodeGenerator ]",
 referencedClasses: ["InliningCodeGenerator"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNil:"]
 }),
 $globals.Compiler);
@@ -549,6 +569,7 @@ args: ["aClass"],
 source: "codeGeneratorClass: aClass\x0a\x09codeGeneratorClass := aClass",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.Compiler);
@@ -596,6 +617,7 @@ args: ["aString", "aClass", "anotherString"],
 source: "compile: aString forClass: aClass protocol: anotherString\x0a\x09| compilationResult result |\x0a\x09compilationResult :=\x0a\x09\x09self compileSource: aString forClass: aClass protocol: anotherString.\x0a\x09compilationResult\x0a\x09\x09at: #fn\x0a\x09\x09put: (self eval: (compilationResult at: #fn) forPackage: self currentPackage);\x0a\x09\x09at: #pragmas\x0a\x09\x09put: ((compilationResult at: #pragmas) collect: [ :each | { each selector. each arguments } ]).\x0a\x09result := Smalltalk core method: compilationResult.\x0a\x09result protocol: anotherString.\x0a\x09^ result",
 referencedClasses: ["Smalltalk"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["compileSource:forClass:protocol:", "at:put:", "eval:forPackage:", "at:", "currentPackage", "collect:", "selector", "arguments", "method:", "core", "protocol:"]
 }),
 $globals.Compiler);
@@ -624,6 +646,7 @@ args: ["aString", "anObject"],
 source: "compileExpression: aString on: anObject\x0a\x09^ self\x0a\x09\x09compile: 'xxxDoIt ^ [ ', aString, ' ] value'\x0a\x09\x09forClass: anObject class\x0a\x09\x09protocol: '**xxxDoIt'",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["compile:forClass:protocol:", ",", "class"]
 }),
 $globals.Compiler);
@@ -650,6 +673,7 @@ args: ["aNode"],
 source: "compileNode: aNode\x0a    | result |\x0a\x09result := self codeGenerator compileNode: aNode.\x0a\x09self cleanCodeGenerator.\x0a\x09^ result",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["compileNode:", "codeGenerator", "cleanCodeGenerator"]
 }),
 $globals.Compiler);
@@ -675,6 +699,7 @@ args: ["aString", "aClass", "anotherString"],
 source: "compileSource: aString forClass: aClass protocol: anotherString\x0a\x09^ self\x0a\x09\x09source: aString;\x0a\x09\x09forClass: aClass protocol: anotherString;\x0a\x09\x09compileNode: (self parse: aString)",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["source:", "forClass:protocol:", "compileNode:", "parse:"]
 }),
 $globals.Compiler);
@@ -693,6 +718,7 @@ args: [],
 source: "currentClass\x0a\x09^ currentClass",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.Compiler);
@@ -712,6 +738,7 @@ args: ["aClass"],
 source: "currentClass: aClass\x0a\x09currentClass := aClass",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.Compiler);
@@ -730,6 +757,7 @@ args: [],
 source: "currentPackage\x0a\x09^ currentPackage",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.Compiler);
@@ -749,6 +777,7 @@ args: ["anObject"],
 source: "currentPackage: anObject\x0a\x09currentPackage := anObject",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.Compiler);
@@ -773,6 +802,7 @@ args: ["aString"],
 source: "eval: aString\x0a\x09<inlineJS: 'return eval(aString)'>",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [["inlineJS:", ["return eval(aString)"]]],
 messageSends: []
 }),
 $globals.Compiler);
@@ -804,6 +834,7 @@ args: ["aString", "aPackage"],
 source: "eval: aString forPackage: aPackage\x0a\x09^ aPackage\x0a\x09\x09ifNil: [ self eval: aString ]\x0a\x09\x09ifNotNil: [ aPackage eval: aString ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNil:ifNotNil:", "eval:"]
 }),
 $globals.Compiler);
@@ -827,6 +858,7 @@ args: ["aString"],
 source: "evaluateExpression: aString\x0a\x09\x22Unlike #eval: evaluate a Smalltalk expression and answer the returned object\x22\x0a\x09^ self evaluateExpression: aString on: DoIt new",
 referencedClasses: ["DoIt"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["evaluateExpression:on:", "new"]
 }),
 $globals.Compiler);
@@ -860,6 +892,7 @@ args: ["aString", "anObject"],
 source: "evaluateExpression: aString on: anObject\x0a\x09\x22Unlike #eval: evaluate a Smalltalk expression with anObject as the receiver and answer the returned object\x22\x0a\x09| result method |\x0a\x09method := self compileExpression: aString on: anObject.\x0a\x09anObject class addCompiledMethod: method.\x0a\x09result := anObject xxxDoIt.\x0a\x09anObject class removeCompiledMethod: method.\x0a\x09^ result",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["compileExpression:on:", "addCompiledMethod:", "class", "xxxDoIt", "removeCompiledMethod:"]
 }),
 $globals.Compiler);
@@ -885,6 +918,7 @@ args: ["aClass", "anotherString"],
 source: "forClass: aClass protocol: anotherString\x0a\x09self\x0a\x09\x09currentPackage: (aClass packageOfProtocol: anotherString);\x0a\x09\x09currentClass: aClass",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["currentPackage:", "packageOfProtocol:", "currentClass:"]
 }),
 $globals.Compiler);
@@ -911,6 +945,7 @@ args: ["aString", "aBehavior", "anotherString"],
 source: "install: aString forClass: aBehavior protocol: anotherString\x0a\x09| compiledMethod |\x0a\x09compiledMethod := self compile: aString forClass: aBehavior protocol: anotherString.\x0a\x09aBehavior addCompiledMethod: compiledMethod.\x0a\x09^ compiledMethod",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["compile:forClass:protocol:", "addCompiledMethod:"]
 }),
 $globals.Compiler);
@@ -934,6 +969,7 @@ args: ["aString"],
 source: "parse: aString\x0a\x09^ Smalltalk parse: aString",
 referencedClasses: ["Smalltalk"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["parse:"]
 }),
 $globals.Compiler);
@@ -962,6 +998,7 @@ args: ["aString"],
 source: "parseExpression: aString\x0a\x09^ self parse: 'doIt ^ [ ', aString, ' ] value'",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["parse:", ","]
 }),
 $globals.Compiler);
@@ -1012,6 +1049,7 @@ args: ["aClass"],
 source: "recompile: aClass\x0a\x09aClass methodDictionary values\x0a\x09\x09do: [ :each | each methodClass = aClass ifTrue: [ \x0a\x09\x09\x09self \x0a\x09\x09\x09\x09install: each source \x0a\x09\x09\x09\x09forClass: aClass \x0a\x09\x09\x09\x09protocol: each protocol ] ]\x0a\x09\x09displayingProgress: 'Recompiling ', aClass name.\x0a\x09aClass theMetaClass ifNotNil: [ :meta |\x0a\x09\x09meta = aClass ifFalse: [ self recompile: meta ] ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["do:displayingProgress:", "values", "methodDictionary", "ifTrue:", "=", "methodClass", "install:forClass:protocol:", "source", "protocol", ",", "name", "ifNotNil:", "theMetaClass", "ifFalse:", "recompile:"]
 }),
 $globals.Compiler);
@@ -1044,6 +1082,7 @@ args: [],
 source: "recompileAll\x0a\x09Smalltalk classes \x0a\x09\x09do: [ :each | self recompile: each ]\x0a\x09\x09displayingProgress: 'Compiling all classes...'",
 referencedClasses: ["Smalltalk"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["do:displayingProgress:", "classes", "recompile:"]
 }),
 $globals.Compiler);
@@ -1073,6 +1112,7 @@ args: [],
 source: "source\x0a\x09^ source ifNil: [ '' ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNil:"]
 }),
 $globals.Compiler);
@@ -1092,6 +1132,7 @@ args: ["aString"],
 source: "source: aString\x0a\x09source := aString",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.Compiler);
@@ -1116,6 +1157,7 @@ args: ["aString"],
 source: "eval: aString\x0a\x09^ self new eval: aString",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["eval:", "new"]
 }),
 $globals.Compiler.a$cls);
@@ -1140,6 +1182,7 @@ args: ["aClass"],
 source: "recompile: aClass\x0a\x09self new recompile: aClass",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["recompile:", "new"]
 }),
 $globals.Compiler.a$cls);
@@ -1172,6 +1215,7 @@ args: [],
 source: "recompileAll\x0a\x09Smalltalk classes do: [ :each |\x0a\x09\x09self recompile: each ]",
 referencedClasses: ["Smalltalk"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["do:", "classes", "recompile:"]
 }),
 $globals.Compiler.a$cls);
@@ -1234,6 +1278,7 @@ args: ["aString", "aContext"],
 source: "evaluate: aString context: aContext\x0a\x09\x22Similar to #evaluate:for:, with the following differences:\x0a\x09- instead of compiling and running `aString`, `aString` is interpreted using an `ASTInterpreter`\x0a\x09- instead of evaluating against a receiver, evaluate in the context of `aContext`\x22\x0a\x0a\x09| compiler ast |\x0a\x09\x0a\x09compiler := Compiler new.\x0a\x09[ ast := compiler parseExpression: aString ] \x0a\x09\x09on: Error \x0a\x09\x09do: [ :ex | ^ Terminal alert: ex messageText ].\x0a\x09\x09\x0a\x09(AISemanticAnalyzer on: aContext receiver class)\x0a\x09\x09context: aContext;\x0a\x09\x09visit: ast.\x0a\x0a\x09^ aContext evaluateNode: ast",
 referencedClasses: ["Compiler", "Error", "Terminal", "AISemanticAnalyzer"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["new", "on:do:", "parseExpression:", "alert:", "messageText", "context:", "on:", "class", "receiver", "visit:", "evaluateNode:"]
 }),
 $globals.Evaluator);
@@ -1257,6 +1302,7 @@ args: ["aString", "anObject"],
 source: "evaluate: aString for: anObject\x0a\x09^ anObject evaluate: aString on: self",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["evaluate:on:"]
 }),
 $globals.Evaluator);
@@ -1303,6 +1349,7 @@ args: ["aString", "anObject"],
 source: "evaluate: aString receiver: anObject\x0a\x09| compiler |\x0a\x09\x0a\x09compiler := Compiler new.\x0a\x09[ compiler parseExpression: aString ] \x0a\x09\x09on: Error \x0a\x09\x09do: [ :ex | ^ Terminal alert: ex messageText ].\x0a\x0a\x09^ compiler evaluateExpression: aString on: anObject",
 referencedClasses: ["Compiler", "Error", "Terminal"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["new", "on:do:", "parseExpression:", "alert:", "messageText", "evaluateExpression:on:"]
 }),
 $globals.Evaluator);
@@ -1327,6 +1374,7 @@ args: ["aString", "anObject"],
 source: "evaluate: aString for: anObject\x0a\x09^ self new evaluate: aString for: anObject",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["evaluate:for:", "new"]
 }),
 $globals.Evaluator.a$cls);
@@ -1356,6 +1404,7 @@ args: [],
 source: "asVariableName\x0a\x09^ (Smalltalk reservedWords includes: self)\x0a\x09\x09ifTrue: [ self, '_' ]\x0a\x09\x09ifFalse: [ self ]",
 referencedClasses: ["Smalltalk"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifTrue:ifFalse:", "includes:", "reservedWords", ","]
 }),
 $globals.String);

File diff suppressed because it is too large
+ 126 - 0
lang/src/Compiler-IR.js


+ 64 - 0
lang/src/Compiler-Inlining.js

@@ -48,6 +48,7 @@ args: ["aNode"],
 source: "visitSendNode: aNode\x0a\x0a\x09aNode superSend ifFalse: [ \x0a\x09\x09(IRSendInliner inlinedSelectors includes: aNode selector) ifTrue: [\x0a\x09\x09\x09aNode shouldBeInlined: true.\x0a\x09\x09\x09aNode receiver ifNotNil: [ :receiver |\x0a\x09\x09\x09\x09receiver shouldBeAliased: true ] ] ].\x0a\x0a\x09^ super visitSendNode: aNode",
 referencedClasses: ["IRSendInliner"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifFalse:", "superSend", "ifTrue:", "includes:", "inlinedSelectors", "selector", "shouldBeInlined:", "ifNotNil:", "receiver", "shouldBeAliased:", "visitSendNode:"]
 }),
 $globals.ASTPreInliner);
@@ -78,6 +79,7 @@ args: ["aVisitor"],
 source: "acceptDagVisitor: aVisitor\x0a\x09aVisitor visitIRInlinedClosure: self",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["visitIRInlinedClosure:"]
 }),
 $globals.IRInlinedClosure);
@@ -96,6 +98,7 @@ args: [],
 source: "isInlined\x0a\x09^ true",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.IRInlinedClosure);
@@ -126,6 +129,7 @@ args: ["aVisitor"],
 source: "acceptDagVisitor: aVisitor\x0a\x09aVisitor visitInlinedSend: self",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["visitInlinedSend:"]
 }),
 $globals.IRInlinedSend);
@@ -144,6 +148,7 @@ args: [],
 source: "internalVariables\x0a\x09\x22Answer a collection of internal variables required \x0a\x09to perform the inlining\x22\x0a\x09\x0a\x09^ #()",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.IRInlinedSend);
@@ -162,6 +167,7 @@ args: [],
 source: "isInlined\x0a\x09^ true",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.IRInlinedSend);
@@ -192,6 +198,7 @@ args: ["aVisitor"],
 source: "acceptDagVisitor: aVisitor\x0a\x09aVisitor visitIRInlinedIfFalse: self",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["visitIRInlinedIfFalse:"]
 }),
 $globals.IRInlinedIfFalse);
@@ -222,6 +229,7 @@ args: ["aVisitor"],
 source: "acceptDagVisitor: aVisitor\x0a\x09aVisitor visitIRInlinedIfNilIfNotNil: self",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["visitIRInlinedIfNilIfNotNil:"]
 }),
 $globals.IRInlinedIfNilIfNotNil);
@@ -245,6 +253,7 @@ args: [],
 source: "internalVariables\x0a\x09^ Array with: self receiverInternalVariable",
 referencedClasses: ["Array"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["with:", "receiverInternalVariable"]
 }),
 $globals.IRInlinedIfNilIfNotNil);
@@ -274,6 +283,7 @@ args: [],
 source: "receiverInternalVariable\x0a\x09^ IRVariable new\x0a\x09\x09variable: (AliasVar new name: self receiverInternalVariableName);\x0a\x09\x09yourself.",
 referencedClasses: ["IRVariable", "AliasVar"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["variable:", "new", "name:", "receiverInternalVariableName", "yourself"]
 }),
 $globals.IRInlinedIfNilIfNotNil);
@@ -292,6 +302,7 @@ args: [],
 source: "receiverInternalVariableName\x0a\x09^ '$receiver'",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.IRInlinedIfNilIfNotNil);
@@ -322,6 +333,7 @@ args: ["aVisitor"],
 source: "acceptDagVisitor: aVisitor\x0a\x09aVisitor visitIRInlinedIfTrue: self",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["visitIRInlinedIfTrue:"]
 }),
 $globals.IRInlinedIfTrue);
@@ -352,6 +364,7 @@ args: ["aVisitor"],
 source: "acceptDagVisitor: aVisitor\x0a\x09aVisitor visitIRInlinedIfTrueIfFalse: self",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["visitIRInlinedIfTrueIfFalse:"]
 }),
 $globals.IRInlinedIfTrueIfFalse);
@@ -382,6 +395,7 @@ args: ["aVisitor"],
 source: "acceptDagVisitor: aVisitor\x0a\x09aVisitor visitIRInlinedSequence: self",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["visitIRInlinedSequence:"]
 }),
 $globals.IRInlinedSequence);
@@ -400,6 +414,7 @@ args: [],
 source: "isInlined\x0a\x09^ true",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.IRInlinedSequence);
@@ -432,6 +447,7 @@ args: [],
 source: "assignmentInliner\x0a\x09^ IRAssignmentInliner new\x0a\x09\x09translator: self;\x0a\x09\x09yourself",
 referencedClasses: ["IRAssignmentInliner"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["translator:", "new", "yourself"]
 }),
 $globals.IRInliner);
@@ -458,6 +474,7 @@ args: [],
 source: "returnInliner\x0a\x09^ IRReturnInliner new\x0a\x09\x09translator: self;\x0a\x09\x09yourself",
 referencedClasses: ["IRReturnInliner"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["translator:", "new", "yourself"]
 }),
 $globals.IRInliner);
@@ -484,6 +501,7 @@ args: [],
 source: "sendInliner\x0a\x09^ IRSendInliner new\x0a\x09\x09translator: self;\x0a\x09\x09yourself",
 referencedClasses: ["IRSendInliner"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["translator:", "new", "yourself"]
 }),
 $globals.IRInliner);
@@ -533,6 +551,7 @@ args: ["anIRAssignment"],
 source: "shouldInlineAssignment: anIRAssignment\x0a\x09^ anIRAssignment isInlined not and: [\x0a\x09\x09anIRAssignment right isSend and: [\x0a\x09\x09\x09self shouldInlineSend: anIRAssignment right ]]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["and:", "not", "isInlined", "isSend", "right", "shouldInlineSend:"]
 }),
 $globals.IRInliner);
@@ -582,6 +601,7 @@ args: ["anIRReturn"],
 source: "shouldInlineReturn: anIRReturn\x0a\x09^ anIRReturn isInlined not and: [\x0a\x09\x09anIRReturn expression isSend and: [\x0a\x09\x09\x09self shouldInlineSend: anIRReturn expression ]]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["and:", "not", "isInlined", "isSend", "expression", "shouldInlineSend:"]
 }),
 $globals.IRInliner);
@@ -613,6 +633,7 @@ args: ["anIRSend"],
 source: "shouldInlineSend: anIRSend\x0a\x09^ anIRSend isInlined not and: [\x0a\x09\x09IRSendInliner shouldInline: anIRSend ]",
 referencedClasses: ["IRSendInliner"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["and:", "not", "isInlined", "shouldInline:"]
 }),
 $globals.IRInliner);
@@ -649,6 +670,7 @@ args: ["anIRAssignment"],
 source: "visitIRAssignment: anIRAssignment\x0a\x09^ (self shouldInlineAssignment: anIRAssignment)\x0a\x09\x09ifTrue: [ self assignmentInliner inlineAssignment: anIRAssignment ]\x0a\x09\x09ifFalse: [ super visitIRAssignment: anIRAssignment ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifTrue:ifFalse:", "shouldInlineAssignment:", "inlineAssignment:", "assignmentInliner", "visitIRAssignment:"]
 }),
 $globals.IRInliner);
@@ -713,6 +735,7 @@ args: ["anIRNonLocalReturn"],
 source: "visitIRNonLocalReturn: anIRNonLocalReturn\x0a\x09| localReturn |\x0a\x09anIRNonLocalReturn scope canInlineNonLocalReturns ifTrue: [\x0a\x09\x09anIRNonLocalReturn scope methodScope removeNonLocalReturn: anIRNonLocalReturn scope.\x0a\x09\x09localReturn := IRReturn new\x0a\x09\x09\x09scope: anIRNonLocalReturn scope;\x0a\x09\x09\x09yourself.\x0a\x09\x09anIRNonLocalReturn dagChildren do: [ :each |\x0a\x09\x09\x09localReturn add: each ].\x0a\x09\x09anIRNonLocalReturn replaceWith: localReturn.\x0a\x09\x09^ self visitIRReturn: localReturn ].\x0a\x09^ super visitIRNonLocalReturn: anIRNonLocalReturn",
 referencedClasses: ["IRReturn"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifTrue:", "canInlineNonLocalReturns", "scope", "removeNonLocalReturn:", "methodScope", "scope:", "new", "yourself", "do:", "dagChildren", "add:", "replaceWith:", "visitIRReturn:", "visitIRNonLocalReturn:"]
 }),
 $globals.IRInliner);
@@ -749,6 +772,7 @@ args: ["anIRReturn"],
 source: "visitIRReturn: anIRReturn\x0a\x09^ (self shouldInlineReturn: anIRReturn)\x0a\x09\x09ifTrue: [ self returnInliner inlineReturn: anIRReturn ]\x0a\x09\x09ifFalse: [ super visitIRReturn: anIRReturn ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifTrue:ifFalse:", "shouldInlineReturn:", "inlineReturn:", "returnInliner", "visitIRReturn:"]
 }),
 $globals.IRInliner);
@@ -785,6 +809,7 @@ args: ["anIRSend"],
 source: "visitIRSend: anIRSend\x0a\x09^ (self shouldInlineSend: anIRSend)\x0a\x09\x09ifTrue: [ self sendInliner inlineSend: anIRSend ]\x0a\x09\x09ifFalse: [ super visitIRSend: anIRSend ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifTrue:ifFalse:", "shouldInlineSend:", "inlineSend:", "sendInliner", "visitIRSend:"]
 }),
 $globals.IRInliner);
@@ -824,6 +849,7 @@ args: ["anIRInlinedClosure"],
 source: "visitIRInlinedClosure: anIRInlinedClosure\x0a\x09self stream nextPutVars: (anIRInlinedClosure tempDeclarations collect: [ :each |\x0a\x09\x09each name asVariableName ]).\x0a\x09self visitAll: anIRInlinedClosure dagChildren",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["nextPutVars:", "stream", "collect:", "tempDeclarations", "asVariableName", "name", "visitAll:", "dagChildren"]
 }),
 $globals.IRInliningJSTranslator);
@@ -886,6 +912,7 @@ args: ["anIRInlinedIfFalse"],
 source: "visitIRInlinedIfFalse: anIRInlinedIfFalse\x0a\x09self stream nextPutIf: [\x0a\x09\x09self stream nextPutAll: '!$core.assert('.\x0a\x09\x09self visit: anIRInlinedIfFalse dagChildren first.\x0a\x09\x09self stream nextPutAll: ')' ]\x0a\x09\x09then: [ self visit: anIRInlinedIfFalse dagChildren last ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["nextPutIf:then:", "stream", "nextPutAll:", "visit:", "first", "dagChildren", "last"]
 }),
 $globals.IRInliningJSTranslator);
@@ -979,6 +1006,7 @@ args: ["anIRInlinedIfNilIfNotNil"],
 source: "visitIRInlinedIfNilIfNotNil: anIRInlinedIfNilIfNotNil\x0a\x09self stream\x0a\x09\x09nextPutIf: [\x0a\x09\x09\x09| recvVarName |\x0a\x09\x09\x09recvVarName := anIRInlinedIfNilIfNotNil receiverInternalVariableName.\x0a\x09\x09\x09self stream nextPutAll: '(', recvVarName, ' = '.\x0a\x09\x09\x09self visit: anIRInlinedIfNilIfNotNil dagChildren first.\x0a\x09\x09\x09self stream nextPutAll: ') == null || ', recvVarName, '.a$nil' ]\x0a\x09\x09then: [ self visit: anIRInlinedIfNilIfNotNil dagChildren second ]\x0a\x09\x09else: [ self visit: anIRInlinedIfNilIfNotNil dagChildren third ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["nextPutIf:then:else:", "stream", "receiverInternalVariableName", "nextPutAll:", ",", "visit:", "first", "dagChildren", "second", "third"]
 }),
 $globals.IRInliningJSTranslator);
@@ -1041,6 +1069,7 @@ args: ["anIRInlinedIfTrue"],
 source: "visitIRInlinedIfTrue: anIRInlinedIfTrue\x0a\x09self stream nextPutIf: [\x0a\x09\x09self stream nextPutAll: '$core.assert('.\x0a\x09\x09self visit: anIRInlinedIfTrue dagChildren first.\x0a\x09\x09self stream nextPutAll: ')' ]\x0a\x09\x09then: [ self visit: anIRInlinedIfTrue dagChildren last ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["nextPutIf:then:", "stream", "nextPutAll:", "visit:", "first", "dagChildren", "last"]
 }),
 $globals.IRInliningJSTranslator);
@@ -1119,6 +1148,7 @@ args: ["anIRInlinedIfTrueIfFalse"],
 source: "visitIRInlinedIfTrueIfFalse: anIRInlinedIfTrueIfFalse\x0a\x09self stream\x0a\x09\x09nextPutIf: [\x0a\x09\x09\x09self stream nextPutAll: '$core.assert('.\x0a\x09\x09\x09self visit: anIRInlinedIfTrueIfFalse dagChildren first.\x0a\x09\x09\x09self stream nextPutAll: ')' ]\x0a\x09\x09then: [ self visit: anIRInlinedIfTrueIfFalse dagChildren second ]\x0a\x09\x09else: [ self visit: anIRInlinedIfTrueIfFalse dagChildren third ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["nextPutIf:then:else:", "stream", "nextPutAll:", "visit:", "first", "dagChildren", "second", "third"]
 }),
 $globals.IRInliningJSTranslator);
@@ -1148,6 +1178,7 @@ args: ["anIRInstruction"],
 source: "ifFalse: anIRInstruction\x0a\x09^ self inlinedSend: IRInlinedIfFalse new withBlock: anIRInstruction",
 referencedClasses: ["IRInlinedIfFalse"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["inlinedSend:withBlock:", "new"]
 }),
 $globals.IRSendInliner);
@@ -1171,6 +1202,7 @@ args: ["anIRInstruction", "anotherIRInstruction"],
 source: "ifFalse: anIRInstruction ifTrue: anotherIRInstruction\x0a\x09^ self perform: #ifTrue:ifFalse: withArguments: { anotherIRInstruction. anIRInstruction }",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["perform:withArguments:"]
 }),
 $globals.IRSendInliner);
@@ -1216,6 +1248,7 @@ args: ["anIRInstruction"],
 source: "ifNil: anIRInstruction\x0a\x09^ self\x0a\x09\x09inlinedSend: IRInlinedIfNilIfNotNil new\x0a\x09\x09withBlock: anIRInstruction\x0a\x09\x09withBlock: (IRClosure new\x0a\x09\x09\x09scope: anIRInstruction scope copy;\x0a\x09\x09\x09add: (IRBlockSequence new\x0a\x09\x09\x09\x09add: self send receiver;\x0a\x09\x09\x09\x09yourself);\x0a\x09\x09\x09yourself)",
 referencedClasses: ["IRInlinedIfNilIfNotNil", "IRClosure", "IRBlockSequence"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["inlinedSend:withBlock:withBlock:", "new", "scope:", "copy", "scope", "add:", "receiver", "send", "yourself"]
 }),
 $globals.IRSendInliner);
@@ -1239,6 +1272,7 @@ args: ["anIRInstruction", "anotherIRInstruction"],
 source: "ifNil: anIRInstruction ifNotNil: anotherIRInstruction\x0a\x09^ self inlinedSend: IRInlinedIfNilIfNotNil new withBlock: anIRInstruction withBlock: anotherIRInstruction",
 referencedClasses: ["IRInlinedIfNilIfNotNil"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["inlinedSend:withBlock:withBlock:", "new"]
 }),
 $globals.IRSendInliner);
@@ -1284,6 +1318,7 @@ args: ["anIRInstruction"],
 source: "ifNotNil: anIRInstruction\x0a\x09^ self\x0a\x09\x09inlinedSend: IRInlinedIfNilIfNotNil new\x0a\x09\x09withBlock: (IRClosure new\x0a\x09\x09\x09scope: anIRInstruction scope copy;\x0a\x09\x09\x09add: (IRBlockSequence new\x0a\x09\x09\x09\x09add: self send receiver;\x0a\x09\x09\x09\x09yourself);\x0a\x09\x09\x09yourself)\x0a\x09\x09withBlock: anIRInstruction",
 referencedClasses: ["IRInlinedIfNilIfNotNil", "IRClosure", "IRBlockSequence"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["inlinedSend:withBlock:withBlock:", "new", "scope:", "copy", "scope", "add:", "receiver", "send", "yourself"]
 }),
 $globals.IRSendInliner);
@@ -1307,6 +1342,7 @@ args: ["anIRInstruction", "anotherIRInstruction"],
 source: "ifNotNil: anIRInstruction ifNil: anotherIRInstruction\x0a\x09^ self inlinedSend: IRInlinedIfNilIfNotNil new withBlock: anotherIRInstruction withBlock: anIRInstruction",
 referencedClasses: ["IRInlinedIfNilIfNotNil"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["inlinedSend:withBlock:withBlock:", "new"]
 }),
 $globals.IRSendInliner);
@@ -1330,6 +1366,7 @@ args: ["anIRInstruction"],
 source: "ifTrue: anIRInstruction\x0a\x09^ self inlinedSend: IRInlinedIfTrue new withBlock: anIRInstruction",
 referencedClasses: ["IRInlinedIfTrue"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["inlinedSend:withBlock:", "new"]
 }),
 $globals.IRSendInliner);
@@ -1353,6 +1390,7 @@ args: ["anIRInstruction", "anotherIRInstruction"],
 source: "ifTrue: anIRInstruction ifFalse: anotherIRInstruction\x0a\x09^ self inlinedSend: IRInlinedIfTrueIfFalse new withBlock: anIRInstruction withBlock: anotherIRInstruction",
 referencedClasses: ["IRInlinedIfTrueIfFalse"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["inlinedSend:withBlock:withBlock:", "new"]
 }),
 $globals.IRSendInliner);
@@ -1520,6 +1558,7 @@ args: ["anIRClosure"],
 source: "inlineClosure: anIRClosure\x0a\x09| inlinedClosure sequence statements |\x0a\x0a\x09inlinedClosure := self inlinedClosure.\x0a\x09inlinedClosure \x0a\x09\x09scope: anIRClosure scope;\x0a\x09\x09parent: anIRClosure parent.\x0a\x0a\x09\x22Add the possible temp declarations\x22\x0a\x09anIRClosure tempDeclarations do: [ :each |\x0a\x09\x09\x09inlinedClosure add: each ].\x0a\x0a\x09\x22Add a block sequence\x22\x0a\x09sequence := self inlinedSequence.\x0a\x0a\x09\x22Map the closure arguments to the receiver of the message send\x22\x0a\x09anIRClosure arguments do: [ :each |\x0a\x09\x09inlinedClosure add: (IRTempDeclaration new name: each; yourself).\x0a\x09\x09sequence add: (IRAssignment new\x0a\x09\x09\x09add: (IRVariable new variable: (AliasVar new scope: inlinedClosure scope; name: each; yourself));\x0a\x09\x09\x09add: (IRVariable new variable: (AliasVar new scope: inlinedClosure scope; name: '$receiver'; yourself));\x0a\x09\x09\x09yourself) ].\x0a\x09\x09\x09\x0a\x09\x22To ensure the correct order of the closure instructions: first the temps then the sequence\x22\x0a\x09inlinedClosure add: sequence.\x0a\x0a\x09\x22Get all the statements\x22\x0a\x09statements := anIRClosure sequence dagChildren.\x0a\x09\x0a\x09statements ifNotEmpty: [\x0a\x09\x09statements allButLast do: [ :each | sequence add: each ].\x0a\x0a\x09\x09\x22Inlined closures change local returns into result value itself\x22\x0a\x09\x09sequence add: statements last asInlinedBlockResult ].\x0a\x0a\x09^ inlinedClosure",
 referencedClasses: ["IRTempDeclaration", "IRAssignment", "IRVariable", "AliasVar"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["inlinedClosure", "scope:", "scope", "parent:", "parent", "do:", "tempDeclarations", "add:", "inlinedSequence", "arguments", "name:", "new", "yourself", "variable:", "dagChildren", "sequence", "ifNotEmpty:", "allButLast", "asInlinedBlockResult", "last"]
 }),
 $globals.IRSendInliner);
@@ -1550,6 +1589,7 @@ args: ["anIRSend"],
 source: "inlineSend: anIRSend\x0a\x09self send: anIRSend.\x0a\x09^ self\x0a\x09\x09perform: self send selector\x0a\x09\x09withArguments: self send arguments",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["send:", "perform:withArguments:", "selector", "send", "arguments"]
 }),
 $globals.IRSendInliner);
@@ -1574,6 +1614,7 @@ args: ["anIRSend", "anIRInstruction"],
 source: "inlineSend: anIRSend andReplace: anIRInstruction\x0a\x09anIRInstruction replaceWith: anIRSend.\x0a\x09^ self inlineSend: anIRSend",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["replaceWith:", "inlineSend:"]
 }),
 $globals.IRSendInliner);
@@ -1597,6 +1638,7 @@ args: [],
 source: "inlinedClosure\x0a\x09^ IRInlinedClosure new",
 referencedClasses: ["IRInlinedClosure"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["new"]
 }),
 $globals.IRSendInliner);
@@ -1650,6 +1692,7 @@ args: ["inlinedSend", "anIRInstruction"],
 source: "inlinedSend: inlinedSend withBlock: anIRInstruction\x0a\x09| inlinedClosure |\x0a\x0a\x09anIRInstruction isClosure ifFalse: [ self inliningError: 'Message argument should be a block' ].\x0a\x09anIRInstruction arguments size = 0 ifFalse: [ self inliningError: 'Inlined block should have zero argument' ].\x0a\x0a\x09inlinedClosure := self translator visit: (self inlineClosure: anIRInstruction).\x0a\x0a\x09inlinedSend\x0a\x09\x09add: self send receiver;\x0a\x09\x09add: inlinedClosure.\x0a\x0a\x09self send replaceWith: inlinedSend.\x0a\x09inlinedSend method internalVariables \x0a\x09\x09addAll: inlinedSend internalVariables.\x0a\x0a\x09^ inlinedSend",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifFalse:", "isClosure", "inliningError:", "=", "size", "arguments", "visit:", "translator", "inlineClosure:", "add:", "receiver", "send", "replaceWith:", "addAll:", "internalVariables", "method"]
 }),
 $globals.IRSendInliner);
@@ -1722,6 +1765,7 @@ args: ["inlinedSend", "anIRInstruction", "anotherIRInstruction"],
 source: "inlinedSend: inlinedSend withBlock: anIRInstruction withBlock: anotherIRInstruction\x0a\x09| inlinedClosure1 inlinedClosure2 |\x0a\x0a\x09anIRInstruction isClosure ifFalse: [ self inliningError: 'Message argument should be a block' ].\x0a\x09anotherIRInstruction isClosure ifFalse: [ self inliningError: 'Message argument should be a block' ].\x0a\x0a\x09inlinedClosure1 := self translator visit: (self inlineClosure: anIRInstruction).\x0a\x09inlinedClosure2 := self translator visit: (self inlineClosure: anotherIRInstruction).\x0a\x0a\x09inlinedSend\x0a\x09\x09add: self send receiver;\x0a\x09\x09add: inlinedClosure1;\x0a\x09\x09add: inlinedClosure2.\x0a\x0a\x09self send replaceWith: inlinedSend.\x0a\x09inlinedSend method internalVariables \x0a\x09\x09addAll: inlinedSend internalVariables.\x0a\x09\x09\x0a\x09^ inlinedSend",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifFalse:", "isClosure", "inliningError:", "visit:", "translator", "inlineClosure:", "add:", "receiver", "send", "replaceWith:", "addAll:", "internalVariables", "method"]
 }),
 $globals.IRSendInliner);
@@ -1745,6 +1789,7 @@ args: [],
 source: "inlinedSequence\x0a\x09^ IRInlinedSequence new",
 referencedClasses: ["IRInlinedSequence"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["new"]
 }),
 $globals.IRSendInliner);
@@ -1769,6 +1814,7 @@ args: ["aString"],
 source: "inliningError: aString\x0a\x09InliningError signal: aString",
 referencedClasses: ["InliningError"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["signal:"]
 }),
 $globals.IRSendInliner);
@@ -1787,6 +1833,7 @@ args: [],
 source: "send\x0a\x09^ send",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.IRSendInliner);
@@ -1806,6 +1853,7 @@ args: ["anIRSend"],
 source: "send: anIRSend\x0a\x09send := anIRSend",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.IRSendInliner);
@@ -1824,6 +1872,7 @@ args: [],
 source: "translator\x0a\x09^ translator",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.IRSendInliner);
@@ -1843,6 +1892,7 @@ args: ["anASTTranslator"],
 source: "translator: anASTTranslator\x0a\x09translator := anASTTranslator",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.IRSendInliner);
@@ -1862,6 +1912,7 @@ args: [],
 source: "inlinedSelectors\x0a\x09^ #('ifTrue:' 'ifFalse:' 'ifTrue:ifFalse:' 'ifFalse:ifTrue:' 'ifNil:' 'ifNotNil:' 'ifNil:ifNotNil:' 'ifNotNil:ifNil:')",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.IRSendInliner.a$cls);
@@ -1898,6 +1949,7 @@ args: ["anIRSend"],
 source: "shouldInline: anIRSend\x0a\x09(self inlinedSelectors includes: anIRSend selector) ifFalse: [ ^ false ].\x0a\x09^ anIRSend arguments allSatisfy: [ :each | each isClosure ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifFalse:", "includes:", "inlinedSelectors", "selector", "allSatisfy:", "arguments", "isClosure"]
 }),
 $globals.IRSendInliner.a$cls);
@@ -1927,6 +1979,7 @@ args: ["anIRAssignment"],
 source: "inlineAssignment: anIRAssignment\x0a\x09self target: anIRAssignment left.\x0a\x09^ self inlineSend: anIRAssignment right andReplace: anIRAssignment",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["target:", "left", "inlineSend:andReplace:", "right"]
 }),
 $globals.IRAssignmentInliner);
@@ -1985,6 +2038,7 @@ args: ["anIRClosure"],
 source: "inlineClosure: anIRClosure\x0a\x09| closure sequence statements |\x0a\x0a\x09closure := super inlineClosure: anIRClosure.\x0a\x09sequence := closure sequence.\x0a\x09statements := sequence dagChildren.\x0a\x09\x0a\x09statements ifNotEmpty: [\x0a\x09\x09| final |\x0a\x09\x09final := statements last.\x0a\x09\x09final yieldsValue ifTrue: [\x0a\x09\x09\x09sequence replace: final with: (IRAssignment new\x0a\x09\x09\x09\x09add: self target;\x0a\x09\x09\x09\x09add: final copy;\x0a\x09\x09\x09\x09yourself) ] ].\x0a\x0a\x09^ closure",
 referencedClasses: ["IRAssignment"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["inlineClosure:", "sequence", "dagChildren", "ifNotEmpty:", "last", "ifTrue:", "yieldsValue", "replace:with:", "add:", "new", "target", "copy", "yourself"]
 }),
 $globals.IRAssignmentInliner);
@@ -2003,6 +2057,7 @@ args: [],
 source: "target\x0a\x09^ target",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.IRAssignmentInliner);
@@ -2022,6 +2077,7 @@ args: ["anObject"],
 source: "target: anObject\x0a\x09target := anObject",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.IRAssignmentInliner);
@@ -2082,6 +2138,7 @@ args: ["anIRClosure"],
 source: "inlineClosure: anIRClosure\x0a\x09| closure sequence statements |\x0a\x0a\x09closure := super inlineClosure: anIRClosure.\x0a\x09sequence := closure sequence.\x0a\x09statements := sequence dagChildren.\x0a\x09\x0a\x09statements ifNotEmpty: [\x0a\x09\x09| final |\x0a\x09\x09final := statements last.\x0a\x09\x09final yieldsValue ifTrue: [\x0a\x09\x09\x09sequence replace: final with: (IRReturn new\x0a\x09\x09\x09\x09add: final copy;\x0a\x09\x09\x09\x09yourself) ] ].\x0a\x0a\x09^ closure",
 referencedClasses: ["IRReturn"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["inlineClosure:", "sequence", "dagChildren", "ifNotEmpty:", "last", "ifTrue:", "yieldsValue", "replace:with:", "add:", "new", "copy", "yourself"]
 }),
 $globals.IRReturnInliner);
@@ -2105,6 +2162,7 @@ args: ["anIRReturn"],
 source: "inlineReturn: anIRReturn\x0a\x09^ self inlineSend: anIRReturn expression andReplace: anIRReturn",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["inlineSend:andReplace:", "expression"]
 }),
 $globals.IRReturnInliner);
@@ -2134,6 +2192,7 @@ args: [],
 source: "inliner\x0a\x09^ IRInliner new",
 referencedClasses: ["IRInliner"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["new"]
 }),
 $globals.InliningCodeGenerator);
@@ -2152,6 +2211,7 @@ args: [],
 source: "irTranslatorClass\x0a\x09^ IRInliningJSTranslator",
 referencedClasses: ["IRInliningJSTranslator"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.InliningCodeGenerator);
@@ -2175,6 +2235,7 @@ args: [],
 source: "preInliner\x0a\x09^ ASTPreInliner new",
 referencedClasses: ["ASTPreInliner"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["new"]
 }),
 $globals.InliningCodeGenerator);
@@ -2222,6 +2283,7 @@ args: [],
 source: "transformersDictionary\x0a\x09^ transformersDictionary ifNil: [ transformersDictionary := super transformersDictionary\x0a\x09\x09at: '3000-inlinerTagging' put: self preInliner;\x0a\x09\x09at: '6000-inliner' put: self inliner;\x0a\x09\x09at: '8000-irToJs' put: self irTranslator;\x0a\x09\x09yourself ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNil:", "at:put:", "transformersDictionary", "preInliner", "inliner", "irTranslator", "yourself"]
 }),
 $globals.InliningCodeGenerator);
@@ -2252,6 +2314,7 @@ args: [],
 source: "asInlinedBlockResult\x0a\x09^ self expression",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["expression"]
 }),
 $globals.IRBlockReturn);
@@ -2270,6 +2333,7 @@ args: [],
 source: "asInlinedBlockResult\x0a\x09^ self",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.IRInstruction);

File diff suppressed because it is too large
+ 126 - 0
lang/src/Compiler-Interpreter.js


+ 106 - 0
lang/src/Compiler-Semantic.js

@@ -34,6 +34,7 @@ args: ["aString"],
 source: "addArg: aString\x0a\x09self args at: aString put: (ArgVar on: aString).\x0a\x09(self args at: aString) scope: self",
 referencedClasses: ["ArgVar"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["at:put:", "args", "on:", "scope:", "at:"]
 }),
 $globals.LexicalScope);
@@ -64,6 +65,7 @@ args: ["aString"],
 source: "addTemp: aString\x0a\x09self temps at: aString put: (TempVar on: aString).\x0a\x09(self temps at: aString) scope: self",
 referencedClasses: ["TempVar"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["at:put:", "temps", "on:", "scope:", "at:"]
 }),
 $globals.LexicalScope);
@@ -87,6 +89,7 @@ args: [],
 source: "alias\x0a\x09^ '$ctx', self scopeLevel asString",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: [",", "asString", "scopeLevel"]
 }),
 $globals.LexicalScope);
@@ -115,6 +118,7 @@ args: [],
 source: "allVariableNames\x0a\x09^ self args keys, self temps keys",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: [",", "keys", "args", "temps"]
 }),
 $globals.LexicalScope);
@@ -145,6 +149,7 @@ args: [],
 source: "args\x0a\x09^ args ifNil: [ args := Dictionary new ]",
 referencedClasses: ["Dictionary"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNil:", "new"]
 }),
 $globals.LexicalScope);
@@ -205,6 +210,7 @@ args: ["aStringOrNode"],
 source: "bindingFor: aStringOrNode\x0a\x09^ self pseudoVars at: aStringOrNode value ifAbsent: [\x0a\x09\x09self args at: aStringOrNode value ifAbsent: [\x0a\x09\x09\x09self temps at: aStringOrNode value ifAbsent: [ nil ]]]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["at:ifAbsent:", "pseudoVars", "value", "args", "temps"]
 }),
 $globals.LexicalScope);
@@ -234,6 +240,7 @@ args: [],
 source: "blockIndex\x0a\x09^ blockIndex ifNil: [ 0 ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNil:"]
 }),
 $globals.LexicalScope);
@@ -253,6 +260,7 @@ args: ["anInteger"],
 source: "blockIndex: anInteger \x0a\x09blockIndex := anInteger",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.LexicalScope);
@@ -284,6 +292,7 @@ args: [],
 source: "canInlineNonLocalReturns\x0a\x09^ self isInlined and: [ self outerScope canInlineNonLocalReturns ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["and:", "isInlined", "canInlineNonLocalReturns", "outerScope"]
 }),
 $globals.LexicalScope);
@@ -302,6 +311,7 @@ args: [],
 source: "instruction\x0a\x09^ instruction",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.LexicalScope);
@@ -321,6 +331,7 @@ args: ["anIRInstruction"],
 source: "instruction: anIRInstruction\x0a\x09instruction := anIRInstruction",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.LexicalScope);
@@ -344,6 +355,7 @@ args: [],
 source: "isBlockScope\x0a\x09^ self isMethodScope not",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["not", "isMethodScope"]
 }),
 $globals.LexicalScope);
@@ -381,6 +393,7 @@ args: [],
 source: "isInlined\x0a\x09^ self instruction notNil and: [\x0a\x09\x09self instruction isInlined ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["and:", "notNil", "instruction", "isInlined"]
 }),
 $globals.LexicalScope);
@@ -399,6 +412,7 @@ args: [],
 source: "isMethodScope\x0a\x09^ false",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.LexicalScope);
@@ -440,6 +454,7 @@ args: ["aNode"],
 source: "lookupVariable: aNode\x0a\x09| lookup |\x0a\x09lookup := (self bindingFor: aNode).\x0a\x09lookup ifNil: [\x0a\x09\x09lookup := self outerScope ifNotNil: [\x0a\x09\x09\x09(self outerScope lookupVariable: aNode) ]].\x0a\x09^ lookup",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["bindingFor:", "ifNil:", "ifNotNil:", "outerScope", "lookupVariable:"]
 }),
 $globals.LexicalScope);
@@ -472,6 +487,7 @@ args: [],
 source: "methodScope\x0a\x09^ self outerScope ifNotNil: [\x0a\x09\x09self outerScope methodScope ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNotNil:", "outerScope", "methodScope"]
 }),
 $globals.LexicalScope);
@@ -490,6 +506,7 @@ args: [],
 source: "node\x0a\x09\x22Answer the node in which I am defined\x22\x0a\x09\x0a\x09^ node",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.LexicalScope);
@@ -509,6 +526,7 @@ args: ["aNode"],
 source: "node: aNode\x0a\x09node := aNode",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.LexicalScope);
@@ -527,6 +545,7 @@ args: [],
 source: "outerScope\x0a\x09^ outerScope",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.LexicalScope);
@@ -546,6 +565,7 @@ args: ["aLexicalScope"],
 source: "outerScope: aLexicalScope\x0a\x09outerScope := aLexicalScope",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.LexicalScope);
@@ -569,6 +589,7 @@ args: [],
 source: "pseudoVars\x0a\x09^ self methodScope pseudoVars",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["pseudoVars", "methodScope"]
 }),
 $globals.LexicalScope);
@@ -614,6 +635,7 @@ args: [],
 source: "scopeLevel\x0a\x09self outerScope ifNil: [ ^ 1 ].\x0a\x09self isInlined ifTrue: [ ^ self outerScope scopeLevel ].\x0a\x09\x0a\x09^ self outerScope scopeLevel + 1",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNil:", "outerScope", "ifTrue:", "isInlined", "scopeLevel", "+"]
 }),
 $globals.LexicalScope);
@@ -644,6 +666,7 @@ args: [],
 source: "temps\x0a\x09^ temps ifNil: [ temps := Dictionary new ]",
 referencedClasses: ["Dictionary"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNil:", "new"]
 }),
 $globals.LexicalScope);
@@ -680,6 +703,7 @@ args: ["aString"],
 source: "addIVar: aString\x0a\x09self iVars at: aString put: (InstanceVar on: aString).\x0a\x09(self iVars at: aString) scope: self",
 referencedClasses: ["InstanceVar"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["at:put:", "iVars", "on:", "scope:", "at:"]
 }),
 $globals.MethodLexicalScope);
@@ -704,6 +728,7 @@ args: ["aScope"],
 source: "addNonLocalReturn: aScope\x0a\x09self nonLocalReturns add: aScope",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["add:", "nonLocalReturns"]
 }),
 $globals.MethodLexicalScope);
@@ -736,6 +761,7 @@ args: [],
 source: "allVariableNames\x0a\x09^ super allVariableNames, self iVars keys",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: [",", "allVariableNames", "keys", "iVars"]
 }),
 $globals.MethodLexicalScope);
@@ -775,6 +801,7 @@ args: ["aNode"],
 source: "bindingFor: aNode\x0a\x09^ (super bindingFor: aNode) ifNil: [\x0a\x09\x09self iVars at: aNode value ifAbsent: [ nil ]]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNil:", "bindingFor:", "at:ifAbsent:", "iVars", "value"]
 }),
 $globals.MethodLexicalScope);
@@ -793,6 +820,7 @@ args: [],
 source: "canInlineNonLocalReturns\x0a\x09^ true",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.MethodLexicalScope);
@@ -816,6 +844,7 @@ args: [],
 source: "hasLocalReturn\x0a\x09^ self localReturn",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["localReturn"]
 }),
 $globals.MethodLexicalScope);
@@ -839,6 +868,7 @@ args: [],
 source: "hasNonLocalReturn\x0a\x09^ self nonLocalReturns notEmpty",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["notEmpty", "nonLocalReturns"]
 }),
 $globals.MethodLexicalScope);
@@ -869,6 +899,7 @@ args: [],
 source: "iVars\x0a\x09^ iVars ifNil: [ iVars := Dictionary new ]",
 referencedClasses: ["Dictionary"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNil:", "new"]
 }),
 $globals.MethodLexicalScope);
@@ -887,6 +918,7 @@ args: [],
 source: "isMethodScope\x0a\x09^ true",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.MethodLexicalScope);
@@ -916,6 +948,7 @@ args: [],
 source: "localReturn\x0a\x09^ localReturn ifNil: [ false ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNil:"]
 }),
 $globals.MethodLexicalScope);
@@ -935,6 +968,7 @@ args: ["aBoolean"],
 source: "localReturn: aBoolean\x0a\x09localReturn := aBoolean",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.MethodLexicalScope);
@@ -953,6 +987,7 @@ args: [],
 source: "methodScope\x0a\x09^ self",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.MethodLexicalScope);
@@ -983,6 +1018,7 @@ args: [],
 source: "nonLocalReturns\x0a\x09^ nonLocalReturns ifNil: [ nonLocalReturns := OrderedCollection new ]",
 referencedClasses: ["OrderedCollection"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNil:", "new"]
 }),
 $globals.MethodLexicalScope);
@@ -1026,6 +1062,7 @@ args: [],
 source: "pseudoVars\x0a\x09pseudoVars ifNil: [\x0a\x09\x09pseudoVars := Dictionary new.\x0a\x09\x09Smalltalk pseudoVariableNames do: [ :each |\x0a\x09\x09\x09pseudoVars at: each put: ((PseudoVar on: each)\x0a\x09\x09\x09\x09scope: self methodScope;\x0a\x09\x09\x09\x09yourself) ]].\x0a\x09^ pseudoVars",
 referencedClasses: ["Dictionary", "Smalltalk", "PseudoVar"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNil:", "new", "do:", "pseudoVariableNames", "at:put:", "scope:", "on:", "methodScope", "yourself"]
 }),
 $globals.MethodLexicalScope);
@@ -1052,6 +1089,7 @@ args: ["aScope"],
 source: "removeNonLocalReturn: aScope\x0a\x09self nonLocalReturns remove: aScope ifAbsent: []",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["remove:ifAbsent:", "nonLocalReturns"]
 }),
 $globals.MethodLexicalScope);
@@ -1082,6 +1120,7 @@ args: [],
 source: "unknownVariables\x0a\x09^ unknownVariables ifNil: [ unknownVariables := OrderedCollection new ]",
 referencedClasses: ["OrderedCollection"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNil:", "new"]
 }),
 $globals.MethodLexicalScope);
@@ -1111,6 +1150,7 @@ args: [],
 source: "alias\x0a\x09^ self name asVariableName",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["asVariableName", "name"]
 }),
 $globals.ScopeVar);
@@ -1129,6 +1169,7 @@ args: [],
 source: "isArgVar\x0a\x09^ false",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.ScopeVar);
@@ -1147,6 +1188,7 @@ args: [],
 source: "isClassRefVar\x0a\x09^ false",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.ScopeVar);
@@ -1165,6 +1207,7 @@ args: [],
 source: "isImmutable\x0a\x09^ false",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.ScopeVar);
@@ -1183,6 +1226,7 @@ args: [],
 source: "isInstanceVar\x0a\x09^ false",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.ScopeVar);
@@ -1201,6 +1245,7 @@ args: [],
 source: "isPseudoVar\x0a\x09^ false",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.ScopeVar);
@@ -1219,6 +1264,7 @@ args: [],
 source: "isSelf\x0a\x09^ false",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.ScopeVar);
@@ -1237,6 +1283,7 @@ args: [],
 source: "isSuper\x0a\x09^ false",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.ScopeVar);
@@ -1255,6 +1302,7 @@ args: [],
 source: "isTempVar\x0a\x09^ false",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.ScopeVar);
@@ -1273,6 +1321,7 @@ args: [],
 source: "isUnknownVar\x0a\x09^ false",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.ScopeVar);
@@ -1291,6 +1340,7 @@ args: [],
 source: "name\x0a\x09^ name",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.ScopeVar);
@@ -1310,6 +1360,7 @@ args: ["aString"],
 source: "name: aString\x0a\x09name := aString",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.ScopeVar);
@@ -1328,6 +1379,7 @@ args: [],
 source: "scope\x0a\x09^ scope",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.ScopeVar);
@@ -1347,6 +1399,7 @@ args: ["aScope"],
 source: "scope: aScope\x0a\x09scope := aScope",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.ScopeVar);
@@ -1385,6 +1438,7 @@ args: [],
 source: "validateAssignment\x0a\x09(self isArgVar or: [ self isPseudoVar ]) ifTrue: [\x0a\x09\x09InvalidAssignmentError new\x0a\x09\x09\x09variableName: self name;\x0a\x09\x09\x09signal]",
 referencedClasses: ["InvalidAssignmentError"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifTrue:", "or:", "isArgVar", "isPseudoVar", "variableName:", "new", "name", "signal"]
 }),
 $globals.ScopeVar);
@@ -1412,6 +1466,7 @@ args: ["aString"],
 source: "on: aString\x0a\x09^ self new\x0a\x09\x09name: aString;\x0a\x09\x09yourself",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["name:", "new", "yourself"]
 }),
 $globals.ScopeVar.a$cls);
@@ -1435,6 +1490,7 @@ args: [],
 source: "isImmutable\x0a\x09^ true",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.AliasVar);
@@ -1453,6 +1509,7 @@ args: [],
 source: "node\x0a\x09^ node",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.AliasVar);
@@ -1472,6 +1529,7 @@ args: ["aNode"],
 source: "node: aNode\x0a\x09node := aNode",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.AliasVar);
@@ -1496,6 +1554,7 @@ args: [],
 source: "isArgVar\x0a\x09^ true",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.ArgVar);
@@ -1514,6 +1573,7 @@ args: [],
 source: "isImmutable\x0a\x09^ true",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.ArgVar);
@@ -1543,6 +1603,7 @@ args: [],
 source: "alias\x0a\x09\x22Fixes issue #190.\x0a\x09A function is created in the method definition, answering the class or nil.\x0a\x09See JSStream >> #nextPutClassRefFunction:\x22\x0a\x09\x0a\x09^ '$globals.', self name",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: [",", "name"]
 }),
 $globals.ClassRefVar);
@@ -1561,6 +1622,7 @@ args: [],
 source: "isClassRefVar\x0a\x09^ true",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.ClassRefVar);
@@ -1579,6 +1641,7 @@ args: [],
 source: "isImmutable\x0a\x09^ true",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.ClassRefVar);
@@ -1608,6 +1671,7 @@ args: [],
 source: "alias\x0a\x09^ '$self.', self name",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: [",", "name"]
 }),
 $globals.InstanceVar);
@@ -1626,6 +1690,7 @@ args: [],
 source: "isInstanceVar\x0a\x09^ true",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.InstanceVar);
@@ -1655,6 +1720,7 @@ args: [],
 source: "alias\x0a\x09^ self name",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["name"]
 }),
 $globals.PseudoVar);
@@ -1673,6 +1739,7 @@ args: [],
 source: "isImmutable\x0a\x09^ true",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.PseudoVar);
@@ -1691,6 +1758,7 @@ args: [],
 source: "isPseudoVar\x0a\x09^ true",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.PseudoVar);
@@ -1714,6 +1782,7 @@ args: [],
 source: "isSelf\x0a\x09^ name = 'self'",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["="]
 }),
 $globals.PseudoVar);
@@ -1737,6 +1806,7 @@ args: [],
 source: "isSuper\x0a\x09^ name = 'super'",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["="]
 }),
 $globals.PseudoVar);
@@ -1761,6 +1831,7 @@ args: [],
 source: "isTempVar\x0a\x09^ true",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.TempVar);
@@ -1785,6 +1856,7 @@ args: [],
 source: "isUnknownVar\x0a\x09^ true",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.UnknownVar);
@@ -1821,6 +1893,7 @@ args: [],
 source: "classReferences\x0a\x09^ classReferences ifNil: [ classReferences := Set new ]",
 referencedClasses: ["Set"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNil:", "new"]
 }),
 $globals.SemanticAnalyzer);
@@ -1848,6 +1921,7 @@ args: ["aString"],
 source: "errorShadowingVariable: aString\x0a\x09ShadowingVariableError new\x0a\x09\x09variableName: aString;\x0a\x09\x09signal",
 referencedClasses: ["ShadowingVariableError"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["variableName:", "new", "signal"]
 }),
 $globals.SemanticAnalyzer);
@@ -1897,6 +1971,7 @@ args: ["aNode"],
 source: "errorUnknownVariable: aNode\x0a\x09\x22Throw an error if the variable is undeclared in the global JS scope (i.e. window).\x0a\x09We allow all variables listed by Smalltalk>>#globalJsVariables.\x0a\x09This list includes: `window`, `document`,  `process` and `global`\x0a\x09for nodejs and browser environments.\x0a\x09\x0a\x09This is only to make sure compilation works on both browser-based and nodejs environments.\x0a\x09The ideal solution would be to use a pragma instead\x22\x0a\x0a\x09| identifier |\x0a\x09identifier := aNode value.\x0a\x09\x0a\x09((Smalltalk globalJsVariables includes: identifier) not\x0a\x09\x09and: [ self isVariableUndefined: identifier inPackage: self thePackage ])\x0a\x09\x09\x09ifTrue: [\x0a\x09\x09\x09\x09UnknownVariableError new\x0a\x09\x09\x09\x09\x09variableName: aNode value;\x0a\x09\x09\x09\x09\x09signal ]\x0a\x09\x09\x09ifFalse: [\x0a\x09\x09\x09\x09currentScope methodScope unknownVariables add: aNode value ]",
 referencedClasses: ["Smalltalk", "UnknownVariableError"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["value", "ifTrue:ifFalse:", "and:", "not", "includes:", "globalJsVariables", "isVariableUndefined:inPackage:", "thePackage", "variableName:", "new", "signal", "add:", "unknownVariables", "methodScope"]
 }),
 $globals.SemanticAnalyzer);
@@ -1935,6 +2010,7 @@ args: ["aString", "aPackage"],
 source: "isVariableUndefined: aString inPackage: aPackage\x0a\x09aPackage ifNotNil: [\x0a\x09\x09| packageKnownVars |\x0a\x09\x09packageKnownVars := (aPackage imports\x0a\x09\x09\x09reject: #isString)\x0a\x09\x09\x09collect: #key.\x0a\x09\x09(packageKnownVars includes: aString) ifTrue: [ ^ false ]].\x0a\x09^ Compiler eval: 'typeof ', aString, ' === \x22undefined\x22'",
 referencedClasses: ["Compiler"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNotNil:", "collect:", "reject:", "imports", "ifTrue:", "includes:", "eval:", ","]
 }),
 $globals.SemanticAnalyzer);
@@ -1965,6 +2041,7 @@ args: [],
 source: "messageSends\x0a\x09^ messageSends ifNil: [ messageSends := Dictionary new ]",
 referencedClasses: ["Dictionary"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNil:", "new"]
 }),
 $globals.SemanticAnalyzer);
@@ -1988,6 +2065,7 @@ args: [],
 source: "newBlockScope\x0a\x09^ self newScopeOfClass: LexicalScope",
 referencedClasses: ["LexicalScope"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["newScopeOfClass:"]
 }),
 $globals.SemanticAnalyzer);
@@ -2011,6 +2089,7 @@ args: [],
 source: "newMethodScope\x0a\x09^ self newScopeOfClass: MethodLexicalScope",
 referencedClasses: ["MethodLexicalScope"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["newScopeOfClass:"]
 }),
 $globals.SemanticAnalyzer);
@@ -2037,6 +2116,7 @@ args: ["aLexicalScopeClass"],
 source: "newScopeOfClass: aLexicalScopeClass\x0a\x09^ aLexicalScopeClass new\x0a\x09\x09outerScope: currentScope;\x0a\x09\x09yourself",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["outerScope:", "new", "yourself"]
 }),
 $globals.SemanticAnalyzer);
@@ -2069,6 +2149,7 @@ args: [],
 source: "nextBlockIndex\x0a\x09blockIndex ifNil: [ blockIndex := 0 ].\x0a\x09\x0a\x09blockIndex := blockIndex + 1.\x0a\x09^ blockIndex",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNil:", "+"]
 }),
 $globals.SemanticAnalyzer);
@@ -2100,6 +2181,7 @@ args: [],
 source: "popScope\x0a\x09currentScope ifNotNil: [\x0a\x09\x09currentScope := currentScope outerScope ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNotNil:", "outerScope"]
 }),
 $globals.SemanticAnalyzer);
@@ -2125,6 +2207,7 @@ args: ["aScope"],
 source: "pushScope: aScope\x0a\x09aScope outerScope: currentScope.\x0a\x09currentScope := aScope",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["outerScope:"]
 }),
 $globals.SemanticAnalyzer);
@@ -2143,6 +2226,7 @@ args: [],
 source: "theClass\x0a\x09^ theClass",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.SemanticAnalyzer);
@@ -2162,6 +2246,7 @@ args: ["aClass"],
 source: "theClass: aClass\x0a\x09theClass := aClass",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.SemanticAnalyzer);
@@ -2180,6 +2265,7 @@ args: [],
 source: "thePackage\x0a\x09^ thePackage",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.SemanticAnalyzer);
@@ -2199,6 +2285,7 @@ args: ["aPackage"],
 source: "thePackage: aPackage\x0a\x09thePackage := aPackage",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.SemanticAnalyzer);
@@ -2229,6 +2316,7 @@ args: ["aString"],
 source: "validateVariableScope: aString\x0a\x09\x22Validate the variable scope in by doing a recursive lookup, up to the method scope\x22\x0a\x0a\x09(currentScope lookupVariable: aString) ifNotNil: [\x0a\x09\x09self errorShadowingVariable: aString ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNotNil:", "lookupVariable:", "errorShadowingVariable:"]
 }),
 $globals.SemanticAnalyzer);
@@ -2261,6 +2349,7 @@ args: ["aNode"],
 source: "visitAssignmentNode: aNode\x0a\x09super visitAssignmentNode: aNode.\x0a\x09aNode left beAssigned",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["visitAssignmentNode:", "beAssigned", "left"]
 }),
 $globals.SemanticAnalyzer);
@@ -2307,6 +2396,7 @@ args: ["aNode"],
 source: "visitBlockNode: aNode\x0a\x09self pushScope: self newBlockScope.\x0a\x09aNode scope: currentScope.\x0a\x09currentScope node: aNode.\x0a\x09currentScope blockIndex: self nextBlockIndex.\x0a\x0a\x09aNode parameters do: [ :each |\x0a\x09\x09self validateVariableScope: each.\x0a\x09\x09currentScope addArg: each ].\x0a\x0a\x09super visitBlockNode: aNode.\x0a\x09self popScope",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["pushScope:", "newBlockScope", "scope:", "node:", "blockIndex:", "nextBlockIndex", "do:", "parameters", "validateVariableScope:", "addArg:", "visitBlockNode:", "popScope"]
 }),
 $globals.SemanticAnalyzer);
@@ -2339,6 +2429,7 @@ args: ["aNode"],
 source: "visitCascadeNode: aNode\x0a\x09aNode receiver: aNode dagChildren first receiver.\x0a\x09super visitCascadeNode: aNode",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["receiver:", "receiver", "first", "dagChildren", "visitCascadeNode:"]
 }),
 $globals.SemanticAnalyzer);
@@ -2398,6 +2489,7 @@ args: ["aNode"],
 source: "visitMethodNode: aNode\x0a\x09self pushScope: self newMethodScope.\x0a\x09aNode scope: currentScope.\x0a\x09currentScope node: aNode.\x0a\x0a\x09self theClass allInstanceVariableNames do: [ :each |\x0a\x09\x09currentScope addIVar: each ].\x0a\x09aNode arguments do: [ :each |\x0a\x09\x09self validateVariableScope: each.\x0a\x09\x09currentScope addArg: each ].\x0a\x0a\x09super visitMethodNode: aNode.\x0a\x0a\x09aNode\x0a\x09\x09classReferences: self classReferences;\x0a\x09\x09sendIndexes: self messageSends.\x0a\x09self popScope.\x0a\x09^ aNode",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["pushScope:", "newMethodScope", "scope:", "node:", "do:", "allInstanceVariableNames", "theClass", "addIVar:", "arguments", "validateVariableScope:", "addArg:", "visitMethodNode:", "classReferences:", "classReferences", "sendIndexes:", "messageSends", "popScope"]
 }),
 $globals.SemanticAnalyzer);
@@ -2437,6 +2529,7 @@ args: ["aNode"],
 source: "visitReturnNode: aNode\x0a\x09aNode scope: currentScope.\x0a\x09currentScope isMethodScope\x0a\x09\x09ifTrue: [ currentScope localReturn: true ]\x0a\x09\x09ifFalse: [ currentScope methodScope addNonLocalReturn: currentScope ].\x0a\x09super visitReturnNode: aNode",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["scope:", "ifTrue:ifFalse:", "isMethodScope", "localReturn:", "addNonLocalReturn:", "methodScope", "visitReturnNode:"]
 }),
 $globals.SemanticAnalyzer);
@@ -2480,6 +2573,7 @@ args: ["aNode"],
 source: "visitSendNode: aNode\x0a\x0a\x09| sends |\x0a\x09sends := self messageSends at: aNode selector ifAbsentPut: [ OrderedCollection new ].\x0a\x09sends add: aNode.\x0a\x0a\x09aNode index: sends size.\x0a\x0a\x09super visitSendNode: aNode",
 referencedClasses: ["OrderedCollection"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["at:ifAbsentPut:", "messageSends", "selector", "new", "add:", "index:", "size", "visitSendNode:"]
 }),
 $globals.SemanticAnalyzer);
@@ -2521,6 +2615,7 @@ args: ["aNode"],
 source: "visitSequenceNode: aNode\x0a\x09aNode temps do: [ :each |\x0a\x09\x09self validateVariableScope: each.\x0a\x09\x09currentScope addTemp: each ].\x0a\x0a\x09super visitSequenceNode: aNode",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["do:", "temps", "validateVariableScope:", "addTemp:", "visitSequenceNode:"]
 }),
 $globals.SemanticAnalyzer);
@@ -2589,6 +2684,7 @@ args: ["aNode"],
 source: "visitVariableNode: aNode\x0a\x09\x22Bind a ScopeVar to aNode by doing a lookup in the current scope.\x0a\x09If no ScopeVar is found, bind a UnknowVar and throw an error.\x22\x0a\x0a\x09| binding |\x0a\x09binding := currentScope lookupVariable: aNode.\x0a\x09\x0a\x09binding ifNil: [\x0a\x09\x09aNode value isCapitalized\x0a\x09\x09\x09ifTrue: [ \x22Capital letter variables might be globals.\x22\x0a\x09\x09\x09\x09binding := ClassRefVar new name: aNode value; yourself.\x0a\x09\x09\x09\x09self classReferences add: aNode value]\x0a\x09\x09\x09ifFalse: [\x0a\x09\x09\x09\x09self errorUnknownVariable: aNode.\x0a\x09\x09\x09\x09binding := UnknownVar new name: aNode value; yourself ] ].\x0a\x09\x09\x0a\x09aNode binding: binding.",
 referencedClasses: ["ClassRefVar", "UnknownVar"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["lookupVariable:", "ifNil:", "ifTrue:ifFalse:", "isCapitalized", "value", "name:", "new", "yourself", "add:", "classReferences", "errorUnknownVariable:", "binding:"]
 }),
 $globals.SemanticAnalyzer);
@@ -2616,6 +2712,7 @@ args: ["aClass"],
 source: "on: aClass\x0a\x09^ self new\x0a\x09\x09theClass: aClass;\x0a\x09\x09yourself",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["theClass:", "new", "yourself"]
 }),
 $globals.SemanticAnalyzer.a$cls);
@@ -2650,6 +2747,7 @@ args: [],
 source: "messageText\x0a\x09^ ' Invalid assignment to variable: ', self variableName",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: [",", "variableName"]
 }),
 $globals.InvalidAssignmentError);
@@ -2668,6 +2766,7 @@ args: [],
 source: "variableName\x0a\x09^ variableName",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.InvalidAssignmentError);
@@ -2687,6 +2786,7 @@ args: ["aString"],
 source: "variableName: aString\x0a\x09variableName := aString",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.InvalidAssignmentError);
@@ -2721,6 +2821,7 @@ args: [],
 source: "messageText\x0a\x09^ 'Variable shadowing error: ', self variableName, ' is already defined'",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: [",", "variableName"]
 }),
 $globals.ShadowingVariableError);
@@ -2739,6 +2840,7 @@ args: [],
 source: "variableName\x0a\x09^ variableName",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.ShadowingVariableError);
@@ -2758,6 +2860,7 @@ args: ["aString"],
 source: "variableName: aString\x0a\x09variableName := aString",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.ShadowingVariableError);
@@ -2792,6 +2895,7 @@ args: [],
 source: "messageText\x0a\x09^ 'Unknown Variable error: ', self variableName, ' is not defined'",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: [",", "variableName"]
 }),
 $globals.UnknownVariableError);
@@ -2810,6 +2914,7 @@ args: [],
 source: "variableName\x0a\x09^ variableName",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.UnknownVariableError);
@@ -2829,6 +2934,7 @@ args: ["aString"],
 source: "variableName: aString\x0a\x09variableName := aString",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.UnknownVariableError);

+ 82 - 0
lang/src/Compiler-Tests.js

@@ -24,6 +24,7 @@ args: ["aString", "aClass"],
 source: "parse: aString forClass: aClass\x0a\x09^ Compiler new\x0a\x09\x09ast: aString\x0a\x09\x09forClass: aClass\x0a\x09\x09protocol: 'test'",
 referencedClasses: ["Compiler"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ast:forClass:protocol:", "new"]
 }),
 $globals.ASTParsingTest);
@@ -53,6 +54,7 @@ args: [],
 source: "astPCNodeVisitor\x0a\x09^ ASTPCNodeVisitor new\x0a\x09\x09index: 0;\x0a\x09\x09yourself",
 referencedClasses: ["ASTPCNodeVisitor"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["index:", "new", "yourself"]
 }),
 $globals.ASTPCNodeVisitorTest);
@@ -80,6 +82,7 @@ args: ["aString"],
 source: "astPCNodeVisitorForSelector: aString\x0a\x09^ ASTPCNodeVisitor new\x0a\x09\x09selector: aString;\x0a\x09\x09index: 0;\x0a\x09\x09yourself",
 referencedClasses: ["ASTPCNodeVisitor"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["selector:", "new", "index:", "yourself"]
 }),
 $globals.ASTPCNodeVisitorTest);
@@ -111,6 +114,7 @@ args: [],
 source: "testJSStatementNode\x0a\x09| ast visitor |\x0a\x09\x0a\x09ast := self parse: 'foo <inlineJS: ''consolee.log(1)''>' forClass: Object.\x0a\x09self assert: (self astPCNodeVisitor\x0a\x09\x09visit: ast;\x0a\x09\x09currentNode) isJSStatementNode",
 referencedClasses: ["Object"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["parse:forClass:", "assert:", "isJSStatementNode", "visit:", "astPCNodeVisitor", "currentNode"]
 }),
 $globals.ASTPCNodeVisitorTest);
@@ -142,6 +146,7 @@ args: [],
 source: "testMessageSend\x0a\x09| ast |\x0a\x09\x0a\x09ast := self parse: 'foo self asString yourself. ^ self asBoolean' forClass: Object.\x0a\x09self assert: ((self astPCNodeVisitorForSelector: 'yourself')\x0a\x09\x09visit: ast;\x0a\x09\x09currentNode) selector equals: 'yourself'",
 referencedClasses: ["Object"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["parse:forClass:", "assert:equals:", "selector", "visit:", "astPCNodeVisitorForSelector:", "currentNode"]
 }),
 $globals.ASTPCNodeVisitorTest);
@@ -173,6 +178,7 @@ args: [],
 source: "testMessageSendWithBlocks\x0a\x09| ast |\x0a\x09\x0a\x09ast := self parse: 'foo true ifTrue: [ [ self asString yourself ] value.  ]. ^ self asBoolean' forClass: Object.\x0a\x09self assert: ((self astPCNodeVisitorForSelector: 'yourself')\x0a\x09\x09visit: ast;\x0a\x09\x09currentNode) selector equals: 'yourself'",
 referencedClasses: ["Object"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["parse:forClass:", "assert:equals:", "selector", "visit:", "astPCNodeVisitorForSelector:", "currentNode"]
 }),
 $globals.ASTPCNodeVisitorTest);
@@ -229,6 +235,7 @@ args: [],
 source: "testMessageSendWithInlining\x0a\x09| ast |\x0a\x09\x0a\x09ast := self parse: 'foo true ifTrue: [ self asString yourself ]. ^ self asBoolean' forClass: Object.\x0a\x09self assert: ((self astPCNodeVisitorForSelector: 'yourself')\x0a\x09\x09visit: ast;\x0a\x09\x09currentNode) selector equals: 'yourself'.\x0a\x09\x09\x0a\x09ast := self parse: 'foo true ifTrue: [ self asString yourself ]. ^ self asBoolean' forClass: Object.\x0a\x09self assert: ((self astPCNodeVisitorForSelector: 'asBoolean')\x0a\x09\x09visit: ast;\x0a\x09\x09currentNode) selector equals: 'asBoolean'",
 referencedClasses: ["Object"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["parse:forClass:", "assert:equals:", "selector", "visit:", "astPCNodeVisitorForSelector:", "currentNode"]
 }),
 $globals.ASTPCNodeVisitorTest);
@@ -260,6 +267,7 @@ args: [],
 source: "testNoMessageSend\x0a\x09| ast |\x0a\x09\x0a\x09ast := self parse: 'foo ^ self' forClass: Object.\x0a\x09self assert: (self astPCNodeVisitor\x0a\x09\x09visit: ast;\x0a\x09\x09currentNode) isNil",
 referencedClasses: ["Object"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["parse:forClass:", "assert:", "isNil", "visit:", "astPCNodeVisitor", "currentNode"]
 }),
 $globals.ASTPCNodeVisitorTest);
@@ -338,6 +346,7 @@ args: [],
 source: "testNodeAtPosition\x0a\x09| node |\x0a\x09\x0a\x09node := self parse: 'yourself\x0a\x09^ self' forClass: Object.\x0a\x09\x0a\x09self assert: (node navigationNodeAt: 2@4 ifAbsent: [ nil ]) source equals: 'self'.\x0a\x09\x0a\x09node := self parse: 'foo\x0a\x09true ifTrue: [ 1 ]' forClass: Object.\x0a\x09\x0a\x09self assert: (node navigationNodeAt: 2@7 ifAbsent: [ nil ]) selector equals: 'ifTrue:'.\x0a\x09\x0a\x09node := self parse: 'foo\x0a\x09self foo; bar; baz' forClass: Object.\x0a\x09\x0a\x09self assert: (node navigationNodeAt: 2@8 ifAbsent: [ nil ]) selector equals: 'foo'",
 referencedClasses: ["Object"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["parse:forClass:", "assert:equals:", "source", "navigationNodeAt:ifAbsent:", "@", "selector"]
 }),
 $globals.ASTPositionTest);
@@ -359,6 +368,7 @@ args: [],
 source: "codeGeneratorClass\x0a\x09^ CodeGenerator",
 referencedClasses: ["CodeGenerator"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.CodeGeneratorTest);
@@ -385,6 +395,7 @@ args: [],
 source: "compiler\x0a\x09^ Compiler new\x0a\x09\x09codeGeneratorClass: self codeGeneratorClass;\x0a\x09\x09yourself",
 referencedClasses: ["Compiler"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["codeGeneratorClass:", "new", "codeGeneratorClass", "yourself"]
 }),
 $globals.CodeGeneratorTest);
@@ -409,6 +420,7 @@ args: [],
 source: "setUp\x0a\x09receiver := DoIt new",
 referencedClasses: ["DoIt"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["new"]
 }),
 $globals.CodeGeneratorTest);
@@ -471,6 +483,7 @@ args: ["aString", "anObject", "anErrorClass"],
 source: "should: aString receiver: anObject raise: anErrorClass\x0a\x09| method result |\x0a\x0a\x09receiver := anObject.\x0a\x09[ self should: [\x0a\x09\x09method := self compiler install: aString forClass: anObject class protocol: 'tests'.\x0a\x09\x09receiver perform: method selector ] raise: anErrorClass ]\x0a\x09ensure: [ method ifNotNil: [ anObject class removeCompiledMethod: method ] ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ensure:", "should:raise:", "install:forClass:protocol:", "compiler", "class", "perform:", "selector", "ifNotNil:", "removeCompiledMethod:"]
 }),
 $globals.CodeGeneratorTest);
@@ -506,6 +519,7 @@ args: ["aString", "anObject", "aResult"],
 source: "should: aString receiver: anObject return: aResult\x0a\x09| method result |\x0a\x0a\x09receiver := anObject.\x0a\x09method := self compiler install: aString forClass: anObject class protocol: 'tests'.\x0a\x09result := receiver perform: method selector.\x0a\x09anObject class removeCompiledMethod: method.\x0a\x09self assert: aResult equals: result",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["install:forClass:protocol:", "compiler", "class", "perform:", "selector", "removeCompiledMethod:", "assert:equals:"]
 }),
 $globals.CodeGeneratorTest);
@@ -529,6 +543,7 @@ args: ["aString", "anObject"],
 source: "should: aString return: anObject\x0a\x09^ self \x0a\x09\x09should: aString \x0a\x09\x09receiver: receiver \x0a\x09\x09return: anObject",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["should:receiver:return:"]
 }),
 $globals.CodeGeneratorTest);
@@ -547,6 +562,7 @@ args: [],
 source: "tearDown\x0a\x09\x22receiver := nil\x22",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.CodeGeneratorTest);
@@ -579,6 +595,7 @@ args: [],
 source: "testAssignment\x0a\x09self should: 'foo | a | a := true ifTrue: [ 1 ]. ^ a' return: 1.\x0a\x09self should: 'foo | a | a := false ifTrue: [ 1 ]. ^ a' return: nil.\x0a\x0a\x09self should: 'foo | a | ^ a := true ifTrue: [ 1 ]' return: 1",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["should:return:"]
 }),
 $globals.CodeGeneratorTest);
@@ -607,6 +624,7 @@ args: [],
 source: "testBackslashSelectors\x0a\x09\x0a\x09self should: '\x5c arg ^ 4' return: 4.\x0a\x09self should: '\x5c\x5c arg ^ 42' return: 42",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["should:return:"]
 }),
 $globals.CodeGeneratorTest);
@@ -639,6 +657,7 @@ args: [],
 source: "testBlockReturn\x0a\x09self should: 'foo ^ #(1 2 3) collect: [ :each | true ifTrue: [ each + 1 ] ]' return: #(2 3 4).\x0a\x09self should: 'foo ^ #(1 2 3) collect: [ :each | false ifFalse: [ each + 1 ] ]' return: #(2 3 4).\x0a\x09self should: 'foo ^ #(1 2 3) collect: [ :each | each odd ifTrue: [ each + 1 ] ifFalse: [ each - 1 ] ]' return: #(2 1 4).",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["should:return:"]
 }),
 $globals.CodeGeneratorTest);
@@ -663,6 +682,7 @@ args: [],
 source: "testCascades\x0a\x09\x0a\x09self should: 'foo ^ Array new add: 3; add: 4; yourself' return: #(3 4)",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["should:return:"]
 }),
 $globals.CodeGeneratorTest);
@@ -687,6 +707,7 @@ args: [],
 source: "testCascadesInDynamicArray\x0a\x09self should: 'foo | x | x := 1. ^ {x. [x:=2] value; in: [x]}' return: #(1 2)",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["should:return:"]
 }),
 $globals.CodeGeneratorTest);
@@ -711,6 +732,7 @@ args: [],
 source: "testCascadesInDynamicDictioary\x0a\x09self should: 'foo | x | x := 1. ^ #{''one'' -> x. ''two'' -> ([x:=2] value; in: [x])}' return: #{'one' -> 1. 'two' -> 2}",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["should:return:"]
 }),
 $globals.CodeGeneratorTest);
@@ -735,6 +757,7 @@ args: [],
 source: "testCascadesInSend\x0a\x09self should: 'foo | x | x := 1. ^ Array with: x with: ([x:=2] value; in: [x])' return: #(1 2)",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["should:return:"]
 }),
 $globals.CodeGeneratorTest);
@@ -763,6 +786,7 @@ args: [],
 source: "testCascadesWithInlining\x0a\x09\x0a\x09self should: 'foo ^ true class; ifTrue: [ 1 ] ifFalse: [ 2 ]' return: 1.\x0a\x09self should: 'foo ^ false class; ifTrue: [ 1 ] ifFalse: [ 2 ]' return: 2",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["should:return:"]
 }),
 $globals.CodeGeneratorTest);
@@ -791,6 +815,7 @@ args: [],
 source: "testDynamicArrayElementsOrdered\x0a\x09self should: 'foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ { x. x := 2 }\x0a' return: #(1 2).\x0a\x0a\x09self should: 'foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ { x. true ifTrue: [ x := 2 ] }\x0a' return: #(1 2).",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["should:return:"]
 }),
 $globals.CodeGeneratorTest);
@@ -815,6 +840,7 @@ args: [],
 source: "testDynamicDictionaryElementsOrdered\x0a\x09self should: 'foo\x0a\x09| x |\x0a\x09x := ''foo''.\x0a\x09^ #{ x->1. ''bar''->(true ifTrue: [ 2 ]) }\x0a' return: #{'foo'->1. 'bar'->2}.",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["should:return:"]
 }),
 $globals.CodeGeneratorTest);
@@ -845,6 +871,7 @@ args: [],
 source: "testDynamicDictionaryWithMoreArrows\x0a\x09self should: 'foo ^ #{1->2->3}' return: (HashedCollection with: 1->2->3)",
 referencedClasses: ["HashedCollection"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["should:return:", "with:", "->"]
 }),
 $globals.CodeGeneratorTest);
@@ -877,6 +904,7 @@ args: [],
 source: "testGlobalVar\x0a\x09self should: 'foo ^ eval class' return: BlockClosure.\x0a\x09self should: 'foo ^ Math cos: 0' return: 1.\x0a\x09self should: 'foo ^ NonExistingVar' return: nil",
 referencedClasses: ["BlockClosure"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["should:return:"]
 }),
 $globals.CodeGeneratorTest);
@@ -950,6 +978,7 @@ args: [],
 source: "testInnerTemporalDependentElementsOrdered\x0a\x09self should: 'foo\x0a\x09| x |\x0a\x09x := Array.\x0a\x09^ x with: ''foo''->x with: ''bar''->(x := 2)\x0a' return: {'foo'->Array. 'bar'->2}.\x0a\x0a\x09self should: 'foo\x0a\x09| x |\x0a\x09x := Array.\x0a\x09^ x with: ''foo''->x with: ''bar''->(true ifTrue: [ x := 2 ])\x0a' return: {'foo'->Array. 'bar'->2}.\x0a\x0a\x09self should: 'foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ Array with: ''foo''->x with: ''bar''->(true ifTrue: [ x := 2 ])\x0a' return: {'foo'->1. 'bar'->2}.\x0a\x0a\x09self should: 'foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ { ''foo''->x. ''bar''->(true ifTrue: [ x := 2 ]) }\x0a' return: {'foo'->1. 'bar'->2}.\x0a\x0a\x09self should: 'foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ #{ ''foo''->x. ''bar''->(true ifTrue: [ x := 2 ]) }\x0a' return: #{'foo'->1. 'bar'->2}.",
 referencedClasses: ["Array"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["should:return:", "->"]
 }),
 $globals.CodeGeneratorTest);
@@ -974,6 +1003,7 @@ args: [],
 source: "testLexicalScope\x0a\x09self should: 'foo | a | a := 1. [ a := 2 ] value. ^ a' return: 2",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["should:return:"]
 }),
 $globals.CodeGeneratorTest);
@@ -1038,6 +1068,7 @@ args: [],
 source: "testLiterals\x0a\x09self should: 'foo ^ 1' return: 1.\x0a\x09self should: 'foo ^ ''hello''' return: 'hello'.\x0a\x09self should: 'foo ^ #(1 2 3 4)' return: #(1 2 3 4).\x0a\x09self should: 'foo ^ {1. [:x | x ] value: 2. 3. [4] value}' return: #(1 2 3 4).\x0a\x09self should: 'foo ^ true' return: true.\x0a\x09self should: 'foo ^ false' return: false.\x0a\x09self should: 'foo ^ #{1->2. 3->4}' return: #{1->2. 3->4}.\x0a\x09self should: 'foo ^ #hello' return: #hello.\x0a\x09self should: 'foo ^ $h' return: 'h'.\x0a\x09self should: 'foo ^ -123.456' return: -123.456.\x0a\x09self should: 'foo ^ -2.5e4' return: -25000.",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["should:return:"]
 }),
 $globals.CodeGeneratorTest);
@@ -1078,6 +1109,7 @@ args: [],
 source: "testLocalReturn\x0a\x09self should: 'foo ^ 1' return: 1.\x0a\x09self should: 'foo ^ 1 + 1' return: 2.\x0a\x09self should: 'foo ' return: receiver.\x0a\x09self should: 'foo self asString' return: receiver.\x0a\x09self should: 'foo | a b | a := 1. b := 2. ^ a + b' return: 3",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["should:return:"]
 }),
 $globals.CodeGeneratorTest);
@@ -1118,6 +1150,7 @@ args: [],
 source: "testMessageSends\x0a\x09self should: 'foo ^ 1 asString' return: '1'.\x0a\x0a\x09self should: 'foo ^ 1 + 1' return: 2.\x0a\x09self should: 'foo ^ 1 + 2 * 3' return: 9.\x0a\x0a\x09self should: 'foo ^ 1 to: 3' return: #(1 2 3).\x0a\x09self should: 'foo ^ 1 to: 5 by: 2' return: #(1 3 5)",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["should:return:"]
 }),
 $globals.CodeGeneratorTest);
@@ -1142,6 +1175,7 @@ args: [],
 source: "testMistypedPragmaJSStatement\x0a\x09self should: 'foo < inlineJS: ''return ''foo'''' >' receiver: receiver raise: ParseError",
 referencedClasses: ["ParseError"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["should:receiver:raise:"]
 }),
 $globals.CodeGeneratorTest);
@@ -1166,6 +1200,7 @@ args: [],
 source: "testMultipleSequences\x0a\x09self should: 'foo | a b c | a := 2. b := 3. c := a + b. ^ c * 6' return: 30",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["should:return:"]
 }),
 $globals.CodeGeneratorTest);
@@ -1190,6 +1225,7 @@ args: [],
 source: "testMutableLiterals\x0a\x09\x22Mutable literals must be aliased in cascades.\x0a\x09See https://lolg.it/amber/amber/issues/428\x22\x0a\x09\x0a\x09self \x0a\x09\x09should: 'foo ^ #( 1 2 ) at: 1 put: 3; yourself' \x0a\x09\x09return: #(3 2)",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["should:return:"]
 }),
 $globals.CodeGeneratorTest);
@@ -1226,6 +1262,7 @@ args: [],
 source: "testNestedIfTrue\x0a\x09self should: 'foo ^ true ifTrue: [ false ifFalse: [ 1 ] ]' return: 1.\x0a\x09self should: 'foo ^ true ifTrue: [ false ifTrue: [ 1 ] ]' return: nil.\x0a\x0a\x09self should: 'foo true ifTrue: [ false ifFalse: [ ^ 1 ] ]' return: 1.\x0a\x09self should: 'foo true ifTrue: [ false ifTrue: [ ^ 1 ] ]' return: receiver.",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["should:return:"]
 }),
 $globals.CodeGeneratorTest);
@@ -1250,6 +1287,7 @@ args: [],
 source: "testNestedSends\x0a\x09self should: 'foo ^ (Point x: (Point x: 2 y: 3) y: 4) asString' return: (Point x: (2@3) y: 4) asString",
 referencedClasses: ["Point"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["should:return:", "asString", "x:y:", "@"]
 }),
 $globals.CodeGeneratorTest);
@@ -1286,6 +1324,7 @@ args: [],
 source: "testNonLocalReturn\x0a\x09self should: 'foo [ ^ 1 ] value' return: 1.\x0a\x09self should: 'foo [ ^ 1 + 1 ] value' return: 2.\x0a\x09self should: 'foo | a b | a := 1. b := 2. [ ^ a + b ] value. self halt' return: 3.\x0a\x09self should: 'foo [ :x | ^ x + x ] value: 4. ^ 2' return: 8",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["should:return:"]
 }),
 $globals.CodeGeneratorTest);
@@ -1314,6 +1353,7 @@ args: [],
 source: "testPascalCaseGlobal\x0a\x09self should: 'foo ^Object' return: (Smalltalk globals at: 'Object').\x0a\x09self should: 'foo ^NonExistent' return: nil",
 referencedClasses: ["Smalltalk"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["should:return:", "at:", "globals"]
 }),
 $globals.CodeGeneratorTest);
@@ -1338,6 +1378,7 @@ args: [],
 source: "testPragmaInBlock\x0a\x09self should: 'foo ^ [ < fooBar > 4 ] value' receiver: receiver raise: ParseError",
 referencedClasses: ["ParseError"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["should:receiver:raise:"]
 }),
 $globals.CodeGeneratorTest);
@@ -1362,6 +1403,7 @@ args: [],
 source: "testPragmaJSStatement\x0a\x09self should: 'foo < inlineJS: ''return 2+3'' >' return: 5",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["should:return:"]
 }),
 $globals.CodeGeneratorTest);
@@ -1386,6 +1428,7 @@ args: [],
 source: "testRootSuperSend\x0a\x09self \x0a\x09\x09should: 'foo ^ super class' \x0a\x09\x09receiver: ProtoObject new\x0a\x09\x09raise: MessageNotUnderstood",
 referencedClasses: ["ProtoObject", "MessageNotUnderstood"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["should:receiver:raise:", "new"]
 }),
 $globals.CodeGeneratorTest);
@@ -1414,6 +1457,7 @@ args: [],
 source: "testSendReceiverAndArgumentsOrdered\x0a\x09self should: 'foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ Array with: x with: (true ifTrue: [ x := 2 ])\x0a' return: #(1 2).\x0a\x0a\x09self should: 'foo\x0a\x09| x |\x0a\x09x := Array.\x0a\x09^ x with: x with: (true ifTrue: [ x := 2 ])\x0a' return: {Array. 2}.",
 referencedClasses: ["Array"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["should:return:"]
 }),
 $globals.CodeGeneratorTest);
@@ -1438,6 +1482,7 @@ args: [],
 source: "testSuperSend\x0a\x09self \x0a\x09\x09should: 'foo ^ super isBoolean' \x0a\x09\x09receiver: true\x0a\x09\x09return: false",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["should:receiver:return:"]
 }),
 $globals.CodeGeneratorTest);
@@ -1482,6 +1527,7 @@ args: [],
 source: "testTempVariables\x0a\x09self should: 'foo | a | ^ a' return: nil.\x0a\x09self should: 'foo | AVariable | ^ AVariable' return: nil.\x0a\x09self should: 'foo | a b c | ^ c' return: nil.\x0a\x09self should: 'foo | a | [ | d | ^ d ] value' return: nil.\x0a\x09\x0a\x09self should: 'foo | a | a:= 1. ^ a' return: 1.\x0a\x09self should: 'foo | AVariable | AVariable := 1. ^ AVariable' return: 1.",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["should:return:"]
 }),
 $globals.CodeGeneratorTest);
@@ -1506,6 +1552,7 @@ args: [],
 source: "testThisContext\x0a\x09self should: 'foo ^ [ thisContext ] value outerContext == thisContext' return: true",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["should:return:"]
 }),
 $globals.CodeGeneratorTest);
@@ -1534,6 +1581,7 @@ args: [],
 source: "testUnknownPragma\x0a\x09self should: 'foo < fooBar: ''return 2+3'' > | x | ^ x := 6' return: 6.\x0a\x09self should: 'foo | x | < fooBar: ''return 2+3'' > ^ x := 6' return: 6",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["should:return:"]
 }),
 $globals.CodeGeneratorTest);
@@ -1570,6 +1618,7 @@ args: [],
 source: "testifFalse\x0a\x09self should: 'foo true ifFalse: [ ^ 1 ]' return: receiver.\x0a\x09self should: 'foo false ifFalse: [ ^ 2 ]' return: 2.\x0a\x09\x0a\x09self should: 'foo ^ true ifFalse: [ 1 ]' return: nil.\x0a\x09self should: 'foo ^ false ifFalse: [ 2 ]' return: 2.",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["should:return:"]
 }),
 $globals.CodeGeneratorTest);
@@ -1606,6 +1655,7 @@ args: [],
 source: "testifFalseIfTrue\x0a\x09self should: 'foo true ifFalse: [ ^ 1 ] ifTrue: [ ^ 2 ]' return: 2.\x0a\x09self should: 'foo false ifFalse: [ ^ 2 ] ifTrue: [ ^1 ]' return: 2.\x0a\x09\x0a\x09self should: 'foo ^ true ifFalse: [ 1 ] ifTrue: [ 2 ]' return: 2.\x0a\x09self should: 'foo ^ false ifFalse: [ 2 ] ifTrue: [ 1 ]' return: 2.",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["should:return:"]
 }),
 $globals.CodeGeneratorTest);
@@ -1642,6 +1692,7 @@ args: [],
 source: "testifNil\x0a\x09self should: 'foo ^ 1 ifNil: [ 2 ]' return: 1.\x0a\x09self should: 'foo ^ nil ifNil: [ 2 ]' return: 2.\x0a\x0a\x09self should: 'foo 1 ifNil: [ ^ 2 ]' return: receiver.\x0a\x09self should: 'foo nil ifNil: [ ^ 2 ]' return: 2.",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["should:return:"]
 }),
 $globals.CodeGeneratorTest);
@@ -1678,6 +1729,7 @@ args: [],
 source: "testifNilIfNotNil\x0a\x09self should: 'foo ^ 1 ifNil: [ 2 ] ifNotNil: [ 3 ]' return: 3.\x0a\x09self should: 'foo ^ nil ifNil: [ 2 ] ifNotNil: [ 3 ]' return: 2.\x0a\x0a\x09self should: 'foo 1 ifNil: [ ^ 2 ] ifNotNil: [ ^3 ]' return: 3.\x0a\x09self should: 'foo nil ifNil: [ ^ 2 ] ifNotNil: [ ^3 ]' return: 2.",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["should:return:"]
 }),
 $globals.CodeGeneratorTest);
@@ -1714,6 +1766,7 @@ args: [],
 source: "testifNotNil\x0a\x09self should: 'foo ^ 1 ifNotNil: [ 2 ]' return: 2.\x0a\x09self should: 'foo ^ nil ifNotNil: [ 2 ]' return: nil.\x0a\x0a\x09self should: 'foo 1 ifNotNil: [ ^ 2 ]' return: 2.\x0a\x09self should: 'foo nil ifNotNil: [ ^ 2 ]' return: receiver.",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["should:return:"]
 }),
 $globals.CodeGeneratorTest);
@@ -1758,6 +1811,7 @@ args: [],
 source: "testifNotNilWithArgument\x0a\x09self should: 'foo ^ 1 ifNotNil: [ :val | val + 2 ]' return: 3.\x0a\x09self should: 'foo ^ nil ifNotNil: [ :val | val + 2 ]' return: nil.\x0a\x09\x0a\x09self should: 'foo ^ 1 ifNil: [ 5 ] ifNotNil: [ :val | val + 2 ]' return: 3.\x0a\x09self should: 'foo ^ nil ifNil: [ 5 ] ifNotNil: [ :val | val + 2 ]' return: 5.\x0a\x09\x0a\x09self should: 'foo ^ 1 ifNotNil: [ :val | val + 2 ] ifNil: [ 5 ]' return: 3.\x0a\x09self should: 'foo ^ nil ifNotNil: [ :val | val + 2 ] ifNil: [ 5 ]' return: 5",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["should:return:"]
 }),
 $globals.CodeGeneratorTest);
@@ -1794,6 +1848,7 @@ args: [],
 source: "testifTrue\x0a\x09self should: 'foo false ifTrue: [ ^ 1 ]' return: receiver.\x0a\x09self should: 'foo true ifTrue: [ ^ 2 ]' return: 2.\x0a\x09\x0a\x09self should: 'foo ^ false ifTrue: [ 1 ]' return: nil.\x0a\x09self should: 'foo ^ true ifTrue: [ 2 ]' return: 2.",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["should:return:"]
 }),
 $globals.CodeGeneratorTest);
@@ -1830,6 +1885,7 @@ args: [],
 source: "testifTrueIfFalse\x0a\x09self should: 'foo false ifTrue: [ ^ 1 ] ifFalse: [ ^2 ]' return: 2.\x0a\x09self should: 'foo true ifTrue: [ ^ 1 ] ifFalse: [ ^ 2 ]' return: 1.\x0a\x09\x0a\x09self should: 'foo ^ false ifTrue: [ 2 ] ifFalse: [ 1 ]' return: 1.\x0a\x09self should: 'foo ^ true ifTrue: [ 2 ] ifFalse: [ 1 ]' return: 2.",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["should:return:"]
 }),
 $globals.CodeGeneratorTest);
@@ -1897,6 +1953,7 @@ args: ["aString", "anObject", "aDictionary"],
 source: "interpret: aString receiver: anObject withArguments: aDictionary\x0a\x09\x22The food is a methodNode. Interpret the sequenceNode only\x22\x0a\x09\x0a\x09| ctx ast interpreter |\x0a\x09\x0a\x09interpreter := ASTInterpreter new.\x0a\x09ast := self parse: aString forClass: anObject class.\x0a\x09\x0a\x09ctx := AIContext new\x0a\x09\x09receiver: anObject;\x0a\x09\x09interpreter: interpreter;\x0a\x09\x09yourself.\x0a\x09\x09\x0a\x09\x22Define locals for the context\x22\x0a\x09ast sequenceNode ifNotNil: [ :sequence |\x0a\x09\x09sequence temps do: [ :each |\x0a\x09\x09\x09ctx defineLocal: each ] ].\x0a\x09\x09\x0a\x09aDictionary keysAndValuesDo: [ :key :value |\x0a\x09\x09ctx localAt: key put: value ].\x0a\x09\x0a\x09^ interpreter\x0a\x09\x09context: ctx;\x0a\x09\x09node: ast;\x0a\x09\x09enterNode;\x0a\x09\x09proceed;\x0a\x09\x09result",
 referencedClasses: ["ASTInterpreter", "AIContext"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["new", "parse:forClass:", "class", "receiver:", "interpreter:", "yourself", "ifNotNil:", "sequenceNode", "do:", "temps", "defineLocal:", "keysAndValuesDo:", "localAt:put:", "context:", "node:", "enterNode", "proceed", "result"]
 }),
 $globals.ASTInterpreterTest);
@@ -1921,6 +1978,7 @@ args: ["aString", "anObject", "aResult"],
 source: "should: aString receiver: anObject return: aResult\x0a\x09receiver := anObject.\x0a\x09\x0a\x09^ self \x0a\x09\x09assert: (self interpret: aString receiver: receiver withArguments: #{})\x0a\x09\x09equals: aResult",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["assert:equals:", "interpret:receiver:withArguments:"]
 }),
 $globals.ASTInterpreterTest);
@@ -1996,6 +2054,7 @@ args: ["aString", "anObject", "aDictionary"],
 source: "interpret: aString receiver: anObject withArguments: aDictionary\x0a\x09| ctx ast debugger |\x0a\x09\x0a\x09ctx := AIContext new\x0a\x09\x09receiver: anObject;\x0a\x09\x09interpreter: ASTInterpreter new;\x0a\x09\x09yourself.\x0a\x09ast := self parse: aString forClass: anObject class.\x0a\x09\x09\x0a\x09\x22Define locals for the context\x22\x0a\x09ast sequenceNode ifNotNil: [ :sequence |\x0a\x09\x09sequence temps do: [ :each |\x0a\x09\x09\x09ctx defineLocal: each ] ].\x0a\x09\x0a\x09aDictionary keysAndValuesDo: [ :key :value |\x0a\x09\x09ctx localAt: key put: value ].\x0a\x09ctx interpreter context: ctx.\x0a\x09\x0a\x09ctx interpreter node: ast; enterNode.\x0a\x09\x0a\x09debugger := ASTDebugger context: ctx.\x0a\x09\x0a\x09^ debugger \x0a\x09\x09proceed; \x0a\x09\x09result",
 referencedClasses: ["AIContext", "ASTInterpreter", "ASTDebugger"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["receiver:", "new", "interpreter:", "yourself", "parse:forClass:", "class", "ifNotNil:", "sequenceNode", "do:", "temps", "defineLocal:", "keysAndValuesDo:", "localAt:put:", "context:", "interpreter", "node:", "enterNode", "proceed", "result"]
 }),
 $globals.ASTDebuggerTest);
@@ -2017,6 +2076,7 @@ args: [],
 source: "codeGeneratorClass\x0a\x09^ InliningCodeGenerator",
 referencedClasses: ["InliningCodeGenerator"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.InliningCodeGeneratorTest);
@@ -2058,6 +2118,7 @@ args: [],
 source: "testClassRefVar\x0a\x09| node |\x0a\x09node := VariableNode new\x0a\x09\x09value: 'Object';\x0a\x09\x09yourself.\x0a\x09SemanticAnalyzer new \x0a\x09\x09pushScope: MethodLexicalScope new;\x0a\x09\x09visit: node.\x0a\x09self assert: node binding isClassRefVar",
 referencedClasses: ["VariableNode", "SemanticAnalyzer", "MethodLexicalScope"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["value:", "new", "yourself", "pushScope:", "visit:", "assert:", "isClassRefVar", "binding"]
 }),
 $globals.ScopeVarTest);
@@ -2092,6 +2153,7 @@ args: [],
 source: "testInstanceVar\x0a\x09| node scope |\x0a\x09node := VariableNode new\x0a\x09\x09value: 'bzzz';\x0a\x09\x09yourself.\x0a\x09scope := MethodLexicalScope new.\x0a\x09scope addIVar: 'bzzz'.\x0a\x09self assert: (scope bindingFor: node) isInstanceVar",
 referencedClasses: ["VariableNode", "MethodLexicalScope"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["value:", "new", "yourself", "addIVar:", "assert:", "isInstanceVar", "bindingFor:"]
 }),
 $globals.ScopeVarTest);
@@ -2133,6 +2195,7 @@ args: [],
 source: "testPseudoVar\x0a\x09| node pseudoVars |\x0a\x09pseudoVars := #('self' 'super' 'true' 'false' 'nil').\x0a\x09pseudoVars do: [:each |\x0a\x09\x09node := VariableNode new\x0a\x09\x09value: each;\x0a\x09\x09yourself.\x0a\x09\x09self assert: (MethodLexicalScope new bindingFor: node) isPseudoVar]",
 referencedClasses: ["VariableNode", "MethodLexicalScope"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["do:", "value:", "new", "yourself", "assert:", "isPseudoVar", "bindingFor:"]
 }),
 $globals.ScopeVarTest);
@@ -2167,6 +2230,7 @@ args: [],
 source: "testTempVar\x0a\x09| node scope |\x0a\x09node := VariableNode new\x0a\x09\x09value: 'bzzz';\x0a\x09\x09yourself.\x0a\x09scope := MethodLexicalScope new.\x0a\x09scope addTemp: 'bzzz'.\x0a\x09self assert: (scope bindingFor: node) isTempVar",
 referencedClasses: ["VariableNode", "MethodLexicalScope"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["value:", "new", "yourself", "addTemp:", "assert:", "isTempVar", "bindingFor:"]
 }),
 $globals.ScopeVarTest);
@@ -2199,6 +2263,7 @@ args: [],
 source: "testUnknownVar\x0a\x09| node |\x0a\x09node := VariableNode new\x0a\x09\x09value: 'bzzz';\x0a\x09\x09yourself.\x0a\x09self assert: (MethodLexicalScope new bindingFor: node) isNil",
 referencedClasses: ["VariableNode", "MethodLexicalScope"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["value:", "new", "yourself", "assert:", "isNil", "bindingFor:"]
 }),
 $globals.ScopeVarTest);
@@ -2226,6 +2291,7 @@ args: [],
 source: "setUp\x0a\x09analyzer := SemanticAnalyzer on: Object",
 referencedClasses: ["SemanticAnalyzer", "Object"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["on:"]
 }),
 $globals.SemanticAnalyzerTest);
@@ -2261,6 +2327,7 @@ args: [],
 source: "testAssignment\x0a\x09| src ast |\x0a\x0a\x09src := 'foo self := 1'.\x0a\x09ast := Smalltalk parse: src.\x0a\x09self should: [analyzer visit: ast] raise: InvalidAssignmentError",
 referencedClasses: ["Smalltalk", "InvalidAssignmentError"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["parse:", "should:raise:", "visit:"]
 }),
 $globals.SemanticAnalyzerTest);
@@ -2289,6 +2356,7 @@ args: [],
 source: "testNonLocalReturn\x0a\x09| src ast |\x0a\x0a\x09src := 'foo | a | a + 1. ^ a'.\x0a\x09ast := Smalltalk parse: src.\x0a\x09analyzer visit: ast.\x0a\x0a\x09self deny: ast scope hasNonLocalReturn",
 referencedClasses: ["Smalltalk"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["parse:", "visit:", "deny:", "hasNonLocalReturn", "scope"]
 }),
 $globals.SemanticAnalyzerTest);
@@ -2317,6 +2385,7 @@ args: [],
 source: "testNonLocalReturn2\x0a\x09| src ast |\x0a\x0a\x09src := 'foo | a | a + 1. [ [ ^ a] ]'.\x0a\x09ast := Smalltalk parse: src.\x0a\x09analyzer visit: ast.\x0a\x0a\x09self assert: ast scope hasNonLocalReturn",
 referencedClasses: ["Smalltalk"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["parse:", "visit:", "assert:", "hasNonLocalReturn", "scope"]
 }),
 $globals.SemanticAnalyzerTest);
@@ -2356,6 +2425,7 @@ args: [],
 source: "testScope\x0a\x09| src ast |\x0a\x0a\x09src := 'foo | a | a + 1. [ | b | b := a ]'.\x0a\x09ast := Smalltalk parse: src.\x0a\x09analyzer visit: ast.\x0a\x0a\x09self deny: ast dagChildren first dagChildren last scope == ast scope.",
 referencedClasses: ["Smalltalk"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["parse:", "visit:", "deny:", "==", "scope", "last", "dagChildren", "first"]
 }),
 $globals.SemanticAnalyzerTest);
@@ -2411,6 +2481,7 @@ args: [],
 source: "testScope2\x0a\x09| src ast |\x0a\x0a\x09src := 'foo | a | a + 1. [ [ | b | b := a ] ]'.\x0a\x09ast := Smalltalk parse: src.\x0a\x09analyzer visit: ast.\x0a\x0a\x09self deny: ast dagChildren first dagChildren last dagChildren first dagChildren first scope == ast scope.",
 referencedClasses: ["Smalltalk"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["parse:", "visit:", "deny:", "==", "scope", "first", "dagChildren", "last"]
 }),
 $globals.SemanticAnalyzerTest);
@@ -2475,6 +2546,7 @@ args: [],
 source: "testScopeLevel\x0a\x09| src ast |\x0a\x0a\x09src := 'foo | a | a + 1. [ [ | b | b := a ] ]'.\x0a\x09ast := Smalltalk parse: src.\x0a\x09analyzer visit: ast.\x0a\x0a\x09self assert: ast scope scopeLevel equals: 1.\x0a\x09self assert: ast dagChildren first dagChildren last dagChildren first dagChildren first scope scopeLevel equals: 3",
 referencedClasses: ["Smalltalk"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["parse:", "visit:", "assert:equals:", "scopeLevel", "scope", "first", "dagChildren", "last"]
 }),
 $globals.SemanticAnalyzerTest);
@@ -2510,6 +2582,7 @@ args: [],
 source: "testUnknownVariables\x0a\x09| src ast |\x0a\x0a\x09src := 'foo | a | b + a'.\x0a\x09ast := Smalltalk parse: src.\x0a\x0a\x09self should: [ analyzer visit: ast ] raise: UnknownVariableError",
 referencedClasses: ["Smalltalk", "UnknownVariableError"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["parse:", "should:raise:", "visit:"]
 }),
 $globals.SemanticAnalyzerTest);
@@ -2545,6 +2618,7 @@ args: [],
 source: "testUnknownVariablesWithScope\x0a\x09| src ast |\x0a\x0a\x09src := 'foo | a b | [ c + 1. [ a + 1. d + 1 ]]'.\x0a\x09ast := Smalltalk parse: src.\x0a\x09\x0a\x09self should: [ analyzer visit: ast ] raise: UnknownVariableError",
 referencedClasses: ["Smalltalk", "UnknownVariableError"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["parse:", "should:raise:", "visit:"]
 }),
 $globals.SemanticAnalyzerTest);
@@ -2572,6 +2646,7 @@ args: [],
 source: "testVariableShadowing\x0a\x09| src ast |\x0a\x09src := 'foo | a | a + 1'.\x0a\x09ast := Smalltalk parse: src.\x0a\x09analyzer visit: ast",
 referencedClasses: ["Smalltalk"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["parse:", "visit:"]
 }),
 $globals.SemanticAnalyzerTest);
@@ -2607,6 +2682,7 @@ args: [],
 source: "testVariableShadowing2\x0a\x09| src ast |\x0a\x09src := 'foo | a | a + 1. [ | a | a := 2 ]'.\x0a\x09ast := Smalltalk parse: src.\x0a\x09self should: [analyzer visit: ast] raise: ShadowingVariableError",
 referencedClasses: ["Smalltalk", "ShadowingVariableError"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["parse:", "should:raise:", "visit:"]
 }),
 $globals.SemanticAnalyzerTest);
@@ -2634,6 +2710,7 @@ args: [],
 source: "testVariableShadowing3\x0a\x09| src ast |\x0a\x09src := 'foo | a | a + 1. [ | b | b := 2 ]'.\x0a\x09ast := Smalltalk parse: src.\x0a\x09analyzer visit: ast",
 referencedClasses: ["Smalltalk"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["parse:", "visit:"]
 }),
 $globals.SemanticAnalyzerTest);
@@ -2661,6 +2738,7 @@ args: [],
 source: "testVariableShadowing4\x0a\x09| src ast |\x0a\x09src := 'foo | a | a + 1. [ [ [ | b | b := 2 ] ] ]'.\x0a\x09ast := Smalltalk parse: src.\x0a\x09analyzer visit: ast",
 referencedClasses: ["Smalltalk"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["parse:", "visit:"]
 }),
 $globals.SemanticAnalyzerTest);
@@ -2696,6 +2774,7 @@ args: [],
 source: "testVariableShadowing5\x0a\x09| src ast |\x0a\x09src := 'foo | a | a + 1. [ [ [ | a | a := 2 ] ] ]'.\x0a\x09ast := Smalltalk parse: src.\x0a\x09self should: [analyzer visit: ast] raise: ShadowingVariableError",
 referencedClasses: ["Smalltalk", "ShadowingVariableError"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["parse:", "should:raise:", "visit:"]
 }),
 $globals.SemanticAnalyzerTest);
@@ -2884,6 +2963,7 @@ args: [],
 source: "testVariablesLookup\x0a\x09| src ast |\x0a\x0a\x09src := 'foo | a | a + 1. [ | b | b := a ]'.\x0a\x09ast := Smalltalk parse: src.\x0a\x09analyzer visit: ast.\x0a\x0a\x09\x22Binding for `a` in the message send\x22\x0a\x09self assert: ast dagChildren first dagChildren first receiver binding isTempVar.\x0a\x09self assert: ast dagChildren first dagChildren first receiver binding scope == ast scope.\x0a\x0a\x09\x22Binding for `b`\x22\x0a\x09self assert: ast dagChildren first dagChildren last dagChildren first dagChildren first left binding isTempVar.\x0a\x09self assert: ast dagChildren first dagChildren last dagChildren first dagChildren first left binding scope == ast dagChildren first dagChildren last scope.",
 referencedClasses: ["Smalltalk"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["parse:", "visit:", "assert:", "isTempVar", "binding", "receiver", "first", "dagChildren", "==", "scope", "left", "last"]
 }),
 $globals.SemanticAnalyzerTest);
@@ -2922,6 +3002,7 @@ args: [],
 source: "setUp\x0a\x09analyzer := (AISemanticAnalyzer on: Object)\x0a\x09\x09context: (AIContext new\x0a\x09\x09\x09defineLocal: 'local';\x0a\x09\x09\x09localAt: 'local' put: 3;\x0a\x09\x09\x09yourself);\x0a\x09\x09yourself",
 referencedClasses: ["AISemanticAnalyzer", "Object", "AIContext"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["context:", "on:", "defineLocal:", "new", "localAt:put:", "yourself"]
 }),
 $globals.AISemanticAnalyzerTest);
@@ -2957,6 +3038,7 @@ args: [],
 source: "testContextVariables\x0a\x09| src ast |\x0a\x09\x0a\x09src := 'foo | a | local + a'.\x0a\x09ast := Smalltalk parse: src.\x0a\x0a\x09self shouldnt: [ analyzer visit: ast ] raise: UnknownVariableError",
 referencedClasses: ["Smalltalk", "UnknownVariableError"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["parse:", "shouldnt:raise:", "visit:"]
 }),
 $globals.AISemanticAnalyzerTest);

+ 42 - 0
lang/src/Kernel-Announcements.js

@@ -22,6 +22,7 @@ args: [],
 source: "announcementClass\x0a\x09^ announcementClass",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.AnnouncementSubscription);
@@ -46,6 +47,7 @@ args: ["aClass"],
 source: "announcementClass: aClass\x0a\x09announcementClass := Smalltalk globals at: aClass name",
 referencedClasses: ["Smalltalk"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["at:", "globals", "name"]
 }),
 $globals.AnnouncementSubscription);
@@ -74,6 +76,7 @@ args: ["anAnnouncement"],
 source: "deliver: anAnnouncement\x0a\x09(self handlesAnnouncement: anAnnouncement)\x0a\x09\x09ifTrue: [ self valuable value: anAnnouncement ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifTrue:", "handlesAnnouncement:", "value:", "valuable"]
 }),
 $globals.AnnouncementSubscription);
@@ -97,6 +100,7 @@ args: ["anAnnouncement"],
 source: "handlesAnnouncement: anAnnouncement\x0a\x09\x22anAnnouncement might be announced from within another Amber environment\x22\x0a\x09\x0a\x09^ (Smalltalk globals at: anAnnouncement class name) includesBehavior: self announcementClass",
 referencedClasses: ["Smalltalk"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["includesBehavior:", "at:", "globals", "name", "class", "announcementClass"]
 }),
 $globals.AnnouncementSubscription);
@@ -120,6 +124,7 @@ args: [],
 source: "receiver\x0a\x09^ self valuable receiver",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["receiver", "valuable"]
 }),
 $globals.AnnouncementSubscription);
@@ -138,6 +143,7 @@ args: [],
 source: "valuable\x0a\x09^ valuable",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.AnnouncementSubscription);
@@ -157,6 +163,7 @@ args: ["aValuable"],
 source: "valuable: aValuable\x0a\x09valuable := aValuable",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.AnnouncementSubscription);
@@ -181,6 +188,7 @@ args: [],
 source: "receiver\x0a\x09^ receiver",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.AnnouncementValuable);
@@ -200,6 +208,7 @@ args: ["anObject"],
 source: "receiver: anObject\x0a\x09receiver := anObject",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.AnnouncementValuable);
@@ -218,6 +227,7 @@ args: [],
 source: "valuable\x0a\x09^ valuable",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.AnnouncementValuable);
@@ -237,6 +247,7 @@ args: ["anObject"],
 source: "valuable: anObject\x0a\x09valuable := anObject",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.AnnouncementValuable);
@@ -260,6 +271,7 @@ args: [],
 source: "value\x0a\x09^ self valuable value",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["value", "valuable"]
 }),
 $globals.AnnouncementValuable);
@@ -283,6 +295,7 @@ args: ["anObject"],
 source: "value: anObject\x0a\x09^ self valuable value: anObject",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["value:", "valuable"]
 }),
 $globals.AnnouncementValuable);
@@ -321,6 +334,7 @@ args: ["anAnnouncement"],
 source: "announce: anAnnouncement\x0a\x09subscriptions do: [ :each |\x0a\x09\x09each deliver: anAnnouncement ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["do:", "deliver:"]
 }),
 $globals.Announcer);
@@ -353,6 +367,7 @@ args: [],
 source: "initialize\x0a\x09super initialize.\x0a\x09subscriptions := OrderedCollection new",
 referencedClasses: ["OrderedCollection"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["initialize", "new"]
 }),
 $globals.Announcer);
@@ -377,6 +392,7 @@ args: ["aClass", "aBlock"],
 source: "on: aClass do: aBlock\x0a\x09self on: aClass do: aBlock for: nil",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["on:do:for:"]
 }),
 $globals.Announcer);
@@ -421,6 +437,7 @@ args: ["aClass", "aBlock", "aReceiver"],
 source: "on: aClass do: aBlock for: aReceiver\x0a\x09subscriptions add: (AnnouncementSubscription new\x0a\x09\x09valuable: (AnnouncementValuable new\x0a\x09\x09\x09valuable: aBlock;\x0a\x09\x09\x09receiver: aReceiver;\x0a\x09\x09\x09yourself);\x0a\x09\x09announcementClass: aClass;\x0a\x09\x09yourself)",
 referencedClasses: ["AnnouncementSubscription", "AnnouncementValuable"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["add:", "valuable:", "new", "receiver:", "yourself", "announcementClass:"]
 }),
 $globals.Announcer);
@@ -460,6 +477,7 @@ args: ["aClass", "aBlock"],
 source: "on: aClass doOnce: aBlock\x0a\x09| subscription |\x0a\x09\x0a\x09subscription := AnnouncementSubscription new\x0a\x09\x09announcementClass: aClass;\x0a\x09\x09yourself.\x0a\x09subscription valuable: [ :ann |\x0a\x09\x09subscriptions remove: subscription.\x0a\x09\x09aBlock value: ann ].\x0a\x0a\x09subscriptions add: subscription",
 referencedClasses: ["AnnouncementSubscription"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["announcementClass:", "new", "yourself", "valuable:", "remove:", "value:", "add:"]
 }),
 $globals.Announcer);
@@ -501,6 +519,7 @@ args: ["aClass", "aSelector", "anObject"],
 source: "on: aClass send: aSelector to: anObject\x0a\x09subscriptions add: (AnnouncementSubscription new\x0a\x09\x09valuable: (MessageSend new\x0a\x09\x09\x09receiver: anObject;\x0a\x09\x09\x09selector: aSelector;\x0a\x09\x09\x09yourself);\x0a\x09\x09announcementClass: aClass;\x0a\x09\x09yourself)",
 referencedClasses: ["AnnouncementSubscription", "MessageSend"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["add:", "valuable:", "new", "receiver:", "selector:", "yourself", "announcementClass:"]
 }),
 $globals.Announcer);
@@ -533,6 +552,7 @@ args: ["anObject"],
 source: "unsubscribe: anObject\x0a\x09subscriptions := subscriptions reject: [ :each |\x0a\x09\x09each receiver = anObject ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["reject:", "=", "receiver"]
 }),
 $globals.Announcer);
@@ -578,6 +598,7 @@ args: [],
 source: "current\x0a\x09^ current ifNil: [ current := super new ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNil:", "new"]
 }),
 $globals.SystemAnnouncer.a$cls);
@@ -602,6 +623,7 @@ args: [],
 source: "new\x0a\x09self shouldNotImplement",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["shouldNotImplement"]
 }),
 $globals.SystemAnnouncer.a$cls);
@@ -626,6 +648,7 @@ args: [],
 source: "classTag\x0a\x09\x22Returns a tag or general category for this class.\x0a\x09Typically used to help tools do some reflection.\x0a\x09Helios, for example, uses this to decide what icon the class should display.\x22\x0a\x09\x0a\x09^ 'announcement'",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.SystemAnnouncement.a$cls);
@@ -649,6 +672,7 @@ args: [],
 source: "theClass\x0a\x09^ theClass",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.ClassAnnouncement);
@@ -668,6 +692,7 @@ args: ["aClass"],
 source: "theClass: aClass\x0a\x09theClass := aClass",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.ClassAnnouncement);
@@ -710,6 +735,7 @@ args: [],
 source: "oldClass\x0a\x09^ oldClass",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.ClassMigrated);
@@ -729,6 +755,7 @@ args: ["aClass"],
 source: "oldClass: aClass\x0a\x09oldClass := aClass",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.ClassMigrated);
@@ -753,6 +780,7 @@ args: [],
 source: "oldPackage\x0a\x09^ oldPackage",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.ClassMoved);
@@ -772,6 +800,7 @@ args: ["aPackage"],
 source: "oldPackage: aPackage\x0a\x09oldPackage := aPackage",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.ClassMoved);
@@ -808,6 +837,7 @@ args: [],
 source: "method\x0a\x09^ method",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.MethodAnnouncement);
@@ -827,6 +857,7 @@ args: ["aCompiledMethod"],
 source: "method: aCompiledMethod\x0a\x09method := aCompiledMethod",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.MethodAnnouncement);
@@ -857,6 +888,7 @@ args: [],
 source: "oldMethod\x0a\x09^ oldMethod",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.MethodModified);
@@ -876,6 +908,7 @@ args: ["aMethod"],
 source: "oldMethod: aMethod\x0a\x09oldMethod := aMethod",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.MethodModified);
@@ -900,6 +933,7 @@ args: [],
 source: "oldProtocol\x0a\x09^ oldProtocol",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.MethodMoved);
@@ -919,6 +953,7 @@ args: ["aString"],
 source: "oldProtocol: aString\x0a\x09oldProtocol := aString",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.MethodMoved);
@@ -949,6 +984,7 @@ args: [],
 source: "package\x0a\x09^ package",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.PackageAnnouncement);
@@ -968,6 +1004,7 @@ args: ["aPackage"],
 source: "package: aPackage\x0a\x09package := aPackage",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.PackageAnnouncement);
@@ -1029,6 +1066,7 @@ args: [],
 source: "package\x0a\x09\x0a\x09^ self theClass ifNotNil: [ :class | class packageOfProtocol: self protocol ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNotNil:", "theClass", "packageOfProtocol:", "protocol"]
 }),
 $globals.ProtocolAnnouncement);
@@ -1047,6 +1085,7 @@ args: [],
 source: "protocol\x0a\x09^ protocol",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.ProtocolAnnouncement);
@@ -1066,6 +1105,7 @@ args: ["aString"],
 source: "protocol: aString\x0a\x09protocol := aString",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.ProtocolAnnouncement);
@@ -1084,6 +1124,7 @@ args: [],
 source: "theClass\x0a\x09^ theClass",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.ProtocolAnnouncement);
@@ -1103,6 +1144,7 @@ args: ["aClass"],
 source: "theClass: aClass\x0a\x09theClass := aClass",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.ProtocolAnnouncement);

File diff suppressed because it is too large
+ 126 - 0
lang/src/Kernel-Classes.js


File diff suppressed because it is too large
+ 126 - 0
lang/src/Kernel-Collections.js


+ 22 - 0
lang/src/Kernel-Dag.js

@@ -27,6 +27,7 @@ args: ["anObject"],
 source: "value: anObject\x0a\x09^ self visit: anObject",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["visit:"]
 }),
 $globals.AbstractDagVisitor);
@@ -50,6 +51,7 @@ args: ["aNode"],
 source: "visit: aNode\x0a\x09^ aNode acceptDagVisitor: self",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["acceptDagVisitor:"]
 }),
 $globals.AbstractDagVisitor);
@@ -81,6 +83,7 @@ args: ["aCollection"],
 source: "visitAll: aCollection\x0a\x09^ aCollection collect: [ :each | self visit: each ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["collect:", "visit:"]
 }),
 $globals.AbstractDagVisitor);
@@ -104,6 +107,7 @@ args: ["aDagNode"],
 source: "visitAllChildren: aDagNode\x0a\x09^ self visitAll: aDagNode dagChildren",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["visitAll:", "dagChildren"]
 }),
 $globals.AbstractDagVisitor);
@@ -128,6 +132,7 @@ args: ["aNode"],
 source: "visitDagNode: aNode\x0a\x09self subclassResponsibility",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["subclassResponsibility"]
 }),
 $globals.AbstractDagVisitor);
@@ -188,6 +193,7 @@ args: ["aNode"],
 source: "visitDagNodeVariantRedux: aNode\x0a\x09\x22Immutable-guarded implementation of visitDagNode:.\x0a\x09Visits all children and checks if there were changes.\x0a\x09If not, returns aNode.\x0a\x09If yes, returns copy of aNode with new children.\x22\x0a\x0a\x09| newChildren oldChildren |\x0a\x09oldChildren := aNode dagChildren.\x0a\x09newChildren := self visitAllChildren: aNode.\x0a\x09oldChildren size = newChildren size ifTrue: [\x0a\x09\x09(1 to: oldChildren size) detect: [ :i |\x0a\x09\x09\x09(oldChildren at: i) ~= (newChildren at: i)\x0a\x09\x09] ifNone: [ \x22no change\x22 ^ aNode ] ].\x0a\x09^ aNode copy dagChildren: newChildren; yourself",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["dagChildren", "visitAllChildren:", "ifTrue:", "=", "size", "detect:ifNone:", "to:", "~=", "at:", "dagChildren:", "copy", "yourself"]
 }),
 $globals.AbstractDagVisitor);
@@ -212,6 +218,7 @@ args: ["aNode"],
 source: "visitDagNodeVariantSimple: aNode\x0a\x09\x22Simple implementation of visitDagNode:.\x0a\x09Visits children, then returns aNode\x22\x0a\x0a\x09self visitAllChildren: aNode.\x0a\x09^ aNode",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["visitAllChildren:"]
 }),
 $globals.AbstractDagVisitor);
@@ -250,6 +257,7 @@ args: [],
 source: "initialize\x0a\x09super initialize.\x0a\x0a\x09path := #()",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["initialize"]
 }),
 $globals.PathDagVisitor);
@@ -268,6 +276,7 @@ args: [],
 source: "path\x0a\x09^ path",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.PathDagVisitor);
@@ -316,6 +325,7 @@ args: ["aNode"],
 source: "visit: aNode\x0a\x09| oldPath result |\x0a\x09result := aNode.\x0a\x09oldPath := path.\x0a\x09[\x0a\x09\x09path := path, {aNode}.\x0a\x09\x09result := super visit: aNode\x0a\x09] ensure: [ path := oldPath ].\x0a\x09^ result",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ensure:", ",", "visit:"]
 }),
 $globals.PathDagVisitor);
@@ -353,6 +363,7 @@ args: ["aNode"],
 source: "visitDagNodeVariantRedux: aNode\x0a\x09| newNode |\x0a\x09newNode := super visitDagNodeVariantRedux: aNode.\x0a\x09aNode == newNode ifFalse: [ path at: path size put: newNode ].\x0a\x09^ newNode",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["visitDagNodeVariantRedux:", "ifFalse:", "==", "at:put:", "size"]
 }),
 $globals.PathDagVisitor);
@@ -382,6 +393,7 @@ args: ["aVisitor"],
 source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitDagNode: self",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["visitDagNode:"]
 }),
 $globals.DagNode);
@@ -421,6 +433,7 @@ args: [],
 source: "allDagChildren\x0a\x09| allNodes |\x0a\x09\x0a\x09allNodes := self dagChildren asSet.\x0a\x09self dagChildren do: [ :each | \x0a\x09\x09allNodes addAll: each allDagChildren ].\x0a\x09\x0a\x09^ allNodes",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["asSet", "dagChildren", "do:", "addAll:", "allDagChildren"]
 }),
 $globals.DagNode);
@@ -445,6 +458,7 @@ args: [],
 source: "dagChildren\x0a\x09self subclassResponsibility",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["subclassResponsibility"]
 }),
 $globals.DagNode);
@@ -469,6 +483,7 @@ args: ["aCollection"],
 source: "dagChildren: aCollection\x0a\x09self subclassResponsibility",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["subclassResponsibility"]
 }),
 $globals.DagNode);
@@ -487,6 +502,7 @@ args: [],
 source: "isDagNode\x0a\x09^ true",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.DagNode);
@@ -517,6 +533,7 @@ args: ["aDagNode"],
 source: "addDagChild: aDagNode\x0a\x09self dagChildren add: aDagNode",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["add:", "dagChildren"]
 }),
 $globals.DagParentNode);
@@ -547,6 +564,7 @@ args: [],
 source: "dagChildren\x0a\x09^ nodes ifNil: [ nodes := Array new ]",
 referencedClasses: ["Array"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNil:", "new"]
 }),
 $globals.DagParentNode);
@@ -566,6 +584,7 @@ args: ["aCollection"],
 source: "dagChildren: aCollection\x0a\x09nodes := aCollection",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.DagParentNode);
@@ -590,6 +609,7 @@ args: [],
 source: "dagChildren\x0a\x09^ #()",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.DagSink);
@@ -622,6 +642,7 @@ args: ["aCollection"],
 source: "dagChildren: aCollection\x0a\x09aCollection ifNotEmpty: [ self error: 'A DagSink cannot have children.' ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNotEmpty:", "error:"]
 }),
 $globals.DagSink);
@@ -641,6 +662,7 @@ args: [],
 source: "isDagNode\x0a\x09^ false",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.Object);

+ 39 - 0
lang/src/Kernel-Exceptions.js

@@ -28,6 +28,7 @@ args: [],
 source: "basicSignal\x0a\x09<inlineJS: 'throw self;'>",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [["inlineJS:", ["throw self;"]]],
 messageSends: []
 }),
 $globals.Error);
@@ -47,6 +48,7 @@ args: [],
 source: "beHandled\x0a\x09amberHandled := true",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.Error);
@@ -66,6 +68,7 @@ args: [],
 source: "beSmalltalkError\x0a\x09smalltalkError := true",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.Error);
@@ -85,6 +88,7 @@ args: [],
 source: "beUnhandled\x0a\x09amberHandled := false",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.Error);
@@ -103,6 +107,7 @@ args: [],
 source: "context\x0a\x09^ context",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.Error);
@@ -122,6 +127,7 @@ args: ["aMethodContext"],
 source: "context: aMethodContext\x0a\x09context := aMethodContext",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.Error);
@@ -146,6 +152,7 @@ args: [],
 source: "initialize\x0a\x09self messageText: 'Errorclass: ', (self class name).",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["messageText:", ",", "name", "class"]
 }),
 $globals.Error);
@@ -169,6 +176,7 @@ args: [],
 source: "isSmalltalkError\x0a\x09^ smalltalkError == true",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["=="]
 }),
 $globals.Error);
@@ -187,6 +195,7 @@ args: [],
 source: "jsStack\x0a\x09^ stack",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.Error);
@@ -205,6 +214,7 @@ args: [],
 source: "messageText\x0a\x09^ message",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.Error);
@@ -224,6 +234,7 @@ args: ["aString"],
 source: "messageText: aString\x0a\x09message := aString",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.Error);
@@ -247,6 +258,7 @@ args: [],
 source: "outer\x0a\x09\x22Pharo compatibility. Just sends #pass.\x22\x0a\x09\x0a\x09^ self pass",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["pass"]
 }),
 $globals.Error);
@@ -272,6 +284,7 @@ args: [],
 source: "pass\x0a\x09\x22Let outer handler take care of this.\x22\x0a\x0a\x09self beUnhandled; basicSignal",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["beUnhandled", "basicSignal"]
 }),
 $globals.Error);
@@ -296,6 +309,7 @@ args: [],
 source: "resignal\x0a\x09self deprecatedAPI: 'Use #pass.'.\x0a\x09^ self pass",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["deprecatedAPI:", "pass"]
 }),
 $globals.Error);
@@ -323,6 +337,7 @@ args: [],
 source: "signal\x0a\x09self beUnhandled; context: thisContext; beSmalltalkError; basicSignal",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["beUnhandled", "context:", "beSmalltalkError", "basicSignal"]
 }),
 $globals.Error);
@@ -348,6 +363,7 @@ args: ["aString"],
 source: "signal: aString\x0a\x09self messageText: aString; signal",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["messageText:", "signal"]
 }),
 $globals.Error);
@@ -371,6 +387,7 @@ args: [],
 source: "signalerContext\x0a\x09^ self signalerContextFrom: self context",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["signalerContextFrom:", "context"]
 }),
 $globals.Error);
@@ -420,6 +437,7 @@ args: ["aContext"],
 source: "signalerContextFrom: aContext\x0a\x09\x22Find the first sender of signal(:), the first context which is neither \x0a\x09for an instance method nor for a class side method of Exception (or subclass).\x0a\x09This will make sure that the same context is found for both, `Error signal` \x0a\x09and `Error new signal`\x22\x0a\x0a\x09^ aContext findContextSuchThat: [ :one |\x0a\x09\x09(one receiver == self \x0a\x09\x09or: [ one receiver == self class ]) not ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["findContextSuchThat:", "not", "or:", "==", "receiver", "class"]
 }),
 $globals.Error);
@@ -443,6 +461,7 @@ args: [],
 source: "wasHandled\x0a\x09^ amberHandled == true",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["=="]
 }),
 $globals.Error);
@@ -462,6 +481,7 @@ args: [],
 source: "classTag\x0a\x09\x22Returns a tag or general category for this class.\x0a\x09Typically used to help tools do some reflection.\x0a\x09Helios, for example, uses this to decide what icon the class should display.\x22\x0a\x09\x0a\x09^ 'exception'",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.Error.a$cls);
@@ -485,6 +505,7 @@ args: [],
 source: "signal\x0a\x09^ self new signal",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["signal", "new"]
 }),
 $globals.Error.a$cls);
@@ -508,6 +529,7 @@ args: ["aString"],
 source: "signal: aString\x0a\x09^ self new\x0a\x09\x09signal: aString",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["signal:", "new"]
 }),
 $globals.Error.a$cls);
@@ -531,6 +553,7 @@ args: [],
 source: "messageText\x0a\x09^ 'Halt encountered'",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.Halt);
@@ -591,6 +614,7 @@ args: ["aContext"],
 source: "signalerContextFrom: aContext\x0a\x09\x22specialized version to find the proper context to open the debugger on.\x0a\x09This will find the first context whose method is no longer on `Halt` or \x0a\x09`Halt class` nor is `#halt` method itself.\x22\x0a\x09\x0a\x09^ aContext findContextSuchThat: [ :one |\x0a\x09\x09(one receiver == self \x0a\x09\x09or: [ (one receiver == self class) \x0a\x09\x09or: [ one method selector = #halt ]]) not ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["findContextSuchThat:", "not", "or:", "==", "receiver", "class", "=", "selector", "method"]
 }),
 $globals.Halt);
@@ -615,6 +639,7 @@ args: [],
 source: "exception\x0a\x09^ exception",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.JavaScriptException);
@@ -634,6 +659,7 @@ args: ["anException"],
 source: "exception: anException\x0a\x09exception := anException",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.JavaScriptException);
@@ -658,6 +684,7 @@ args: [],
 source: "messageText\x0a\x09<inlineJS: 'return \x22JavaScript exception: \x22 + $self.exception.toString()'>",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [["inlineJS:", ["return \x22JavaScript exception: \x22 + $self.exception.toString()"]]],
 messageSends: []
 }),
 $globals.JavaScriptException);
@@ -682,6 +709,7 @@ args: [],
 source: "shouldBeStubbed\x0a\x09<inlineJS: 'return $self.exception instanceof RangeError'>",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [["inlineJS:", ["return $self.exception instanceof RangeError"]]],
 messageSends: []
 }),
 $globals.JavaScriptException);
@@ -726,6 +754,7 @@ args: [],
 source: "wrap\x0a\x09[ self signal ] tryCatch:\x0a\x09\x09[ self shouldBeStubbed ifTrue: [ self context stubToAtMost: 100 ] ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["tryCatch:", "signal", "ifTrue:", "shouldBeStubbed", "stubToAtMost:", "context"]
 }),
 $globals.JavaScriptException);
@@ -753,6 +782,7 @@ args: ["anException"],
 source: "on: anException\x0a\x09^ self new\x0a\x09\x09exception: anException;\x0a\x09\x09yourself",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["exception:", "new", "yourself"]
 }),
 $globals.JavaScriptException.a$cls);
@@ -780,6 +810,7 @@ args: ["anException", "aMethodContext"],
 source: "on: anException context: aMethodContext\x0a\x09^ self new\x0a\x09\x09exception: anException;\x0a\x09\x09context: aMethodContext;\x0a\x09\x09yourself",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["exception:", "new", "context:", "yourself"]
 }),
 $globals.JavaScriptException.a$cls);
@@ -803,6 +834,7 @@ args: [],
 source: "message\x0a\x09^ smalltalkMessage",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.MessageNotUnderstood);
@@ -822,6 +854,7 @@ args: ["aMessage"],
 source: "message: aMessage\x0a\x09smalltalkMessage := aMessage",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.MessageNotUnderstood);
@@ -850,6 +883,7 @@ args: [],
 source: "messageText\x0a\x09^ self receiver asString, ' does not understand #', self message selector",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: [",", "asString", "receiver", "selector", "message"]
 }),
 $globals.MessageNotUnderstood);
@@ -868,6 +902,7 @@ args: [],
 source: "receiver\x0a\x09^ receiver",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.MessageNotUnderstood);
@@ -887,6 +922,7 @@ args: ["anObject"],
 source: "receiver: anObject\x0a\x09receiver := anObject",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.MessageNotUnderstood);
@@ -911,6 +947,7 @@ args: [],
 source: "object\x0a\x09^ object",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.NonBooleanReceiver);
@@ -930,6 +967,7 @@ args: ["anObject"],
 source: "object: anObject\x0a\x09object := anObject",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.NonBooleanReceiver);
@@ -957,6 +995,7 @@ args: ["anObject"],
 source: "signalOn: anObject\x0a\x09^ self new\x0a\x09\x09object: anObject;\x0a\x09\x09signal",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["object:", "new", "signal"]
 }),
 $globals.NonBooleanReceiver.a$cls);

+ 16 - 0
lang/src/Kernel-Helpers.js

@@ -24,6 +24,7 @@ args: ["aString"],
 source: "subclass: aString \x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self subclass: aString slots: #() package: nil",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["subclass:slots:package:"]
 }),
 $globals.TSubclassable);
@@ -47,6 +48,7 @@ args: ["aString", "anotherString"],
 source: "subclass: aString instanceVariableNames: anotherString\x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self subclass: aString instanceVariableNames: anotherString package: nil",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["subclass:instanceVariableNames:package:"]
 }),
 $globals.TSubclassable);
@@ -70,6 +72,7 @@ args: ["aString", "aString2", "aString3"],
 source: "subclass: aString instanceVariableNames: aString2 category: aString3\x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self subclass: aString instanceVariableNames: aString2 package: aString3",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["subclass:instanceVariableNames:package:"]
 }),
 $globals.TSubclassable);
@@ -93,6 +96,7 @@ args: ["aString", "aString2", "classVars", "pools", "aString3"],
 source: "subclass: aString instanceVariableNames: aString2 classVariableNames: classVars poolDictionaries: pools category: aString3\x0a\x09\x22Kept for file-in compatibility. ignores class variables and pools.\x22\x0a\x09^ self subclass: aString instanceVariableNames: aString2 package: aString3",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["subclass:instanceVariableNames:package:"]
 }),
 $globals.TSubclassable);
@@ -116,6 +120,7 @@ args: ["aString", "aString2", "aString3"],
 source: "subclass: aString instanceVariableNames: aString2 package: aString3\x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self subclass: aString slots: aString2 instanceVariablesStringAsSlotList package: aString3",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["subclass:slots:package:", "instanceVariablesStringAsSlotList"]
 }),
 $globals.TSubclassable);
@@ -139,6 +144,7 @@ args: ["aString", "aCollection"],
 source: "subclass: aString slots: aCollection\x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self subclass: aString slots: aCollection package: nil",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["subclass:slots:package:"]
 }),
 $globals.TSubclassable);
@@ -162,6 +168,7 @@ args: ["aString", "aCollection", "anObject", "anotherString"],
 source: "subclass: aString slots: aCollection classVariables: anObject package: anotherString\x0a\x09\x22Kept for file-in compatibility. ignores class variables.\x22\x0a\x09^ ClassBuilder new\x0a\x09\x09superclass: self subclass: aString slots: aCollection package: anotherString",
 referencedClasses: ["ClassBuilder"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["superclass:subclass:slots:package:", "new"]
 }),
 $globals.TSubclassable);
@@ -185,6 +192,7 @@ args: ["aString", "aCollection", "anObject", "anotherObject", "anotherString"],
 source: "subclass: aString slots: aCollection classVariables: anObject poolDictionaries: anotherObject package: anotherString\x0a\x09\x22Kept for file-in compatibility. ignores class variables and pools.\x22\x0a\x09^ ClassBuilder new\x0a\x09\x09superclass: self subclass: aString slots: aCollection package: anotherString",
 referencedClasses: ["ClassBuilder"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["superclass:subclass:slots:package:", "new"]
 }),
 $globals.TSubclassable);
@@ -208,6 +216,7 @@ args: ["aString", "aCollection", "anotherString"],
 source: "subclass: aString slots: aCollection package: anotherString\x0a\x09^ ClassBuilder new\x0a\x09\x09superclass: self subclass: aString slots: aCollection package: anotherString",
 referencedClasses: ["ClassBuilder"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["superclass:subclass:slots:package:", "new"]
 }),
 $globals.TSubclassable);
@@ -231,6 +240,7 @@ args: ["aString", "aTraitCompositionDescription"],
 source: "subclass: aString uses: aTraitCompositionDescription \x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self subclass: aString uses: aTraitCompositionDescription slots: #() package: nil",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["subclass:uses:slots:package:"]
 }),
 $globals.TSubclassable);
@@ -254,6 +264,7 @@ args: ["aString", "aTraitCompositionDescription", "anotherString"],
 source: "subclass: aString uses: aTraitCompositionDescription instanceVariableNames: anotherString\x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self subclass: aString uses: aTraitCompositionDescription instanceVariableNames: anotherString package: nil",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["subclass:uses:instanceVariableNames:package:"]
 }),
 $globals.TSubclassable);
@@ -277,6 +288,7 @@ args: ["aString", "aTraitCompositionDescription", "aString2", "aString3"],
 source: "subclass: aString uses: aTraitCompositionDescription instanceVariableNames: aString2 category: aString3\x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self subclass: aString uses: aTraitCompositionDescription instanceVariableNames: aString2 package: aString3",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["subclass:uses:instanceVariableNames:package:"]
 }),
 $globals.TSubclassable);
@@ -300,6 +312,7 @@ args: ["aString", "aTraitCompositionDescription", "aString2", "classVars", "pool
 source: "subclass: aString uses: aTraitCompositionDescription instanceVariableNames: aString2 classVariableNames: classVars poolDictionaries: pools category: aString3\x0a\x09\x22Kept for file-in compatibility. ignores class variables and pools.\x22\x0a\x09^ self subclass: aString uses: aTraitCompositionDescription instanceVariableNames: aString2 package: aString3",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["subclass:uses:instanceVariableNames:package:"]
 }),
 $globals.TSubclassable);
@@ -323,6 +336,7 @@ args: ["aString", "aTraitCompositionDescription", "aString2", "aString3"],
 source: "subclass: aString uses: aTraitCompositionDescription instanceVariableNames: aString2 package: aString3\x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self subclass: aString uses: aTraitCompositionDescription slots: aString2 instanceVariablesStringAsSlotList package: aString3",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["subclass:uses:slots:package:", "instanceVariablesStringAsSlotList"]
 }),
 $globals.TSubclassable);
@@ -346,6 +360,7 @@ args: ["aString", "aTraitCompositionDescription", "aCollection"],
 source: "subclass: aString uses: aTraitCompositionDescription slots: aCollection\x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self subclass: aString uses: aTraitCompositionDescription slots: aCollection package: nil",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["subclass:uses:slots:package:"]
 }),
 $globals.TSubclassable);
@@ -372,6 +387,7 @@ args: ["aString", "aTraitCompositionDescription", "aCollection", "aString3"],
 source: "subclass: aString uses: aTraitCompositionDescription slots: aCollection package: aString3\x0a\x09| cls |\x0a\x09cls := self subclass: aString slots: aCollection package: aString3.\x0a\x09cls setTraitComposition: aTraitCompositionDescription asTraitComposition.\x0a\x09^ cls",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["subclass:slots:package:", "setTraitComposition:", "asTraitComposition"]
 }),
 $globals.TSubclassable);

File diff suppressed because it is too large
+ 126 - 0
lang/src/Kernel-Infrastructure.js


File diff suppressed because it is too large
+ 126 - 0
lang/src/Kernel-Methods.js


File diff suppressed because it is too large
+ 126 - 0
lang/src/Kernel-Objects.js


+ 14 - 0
lang/src/Kernel-Promises.js

@@ -26,6 +26,7 @@ args: ["aCollection"],
 source: "all: aCollection\x0a\x22Returns a Promise resolved with results of sub-promises.\x22\x0a<inlineJS: 'return Promise.all($recv(aCollection)._asArray())'>",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [["inlineJS:", ["return Promise.all($recv(aCollection)._asArray())"]]],
 messageSends: []
 }),
 $globals.Promise.a$cls);
@@ -50,6 +51,7 @@ args: ["aCollection"],
 source: "any: aCollection\x0a\x22Returns a Promise resolved with first result of sub-promises.\x22\x0a<inlineJS: 'return Promise.race($recv(aCollection)._asArray())'>",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [["inlineJS:", ["return Promise.race($recv(aCollection)._asArray())"]]],
 messageSends: []
 }),
 $globals.Promise.a$cls);
@@ -73,6 +75,7 @@ args: ["aBlock"],
 source: "forBlock: aBlock\x0a\x22Returns a Promise that is resolved with the value of aBlock,\x0aand rejected if error happens while evaluating aBlock.\x22\x0a\x09^ self new then: aBlock",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["then:", "new"]
 }),
 $globals.Promise.a$cls);
@@ -97,6 +100,7 @@ args: [],
 source: "new\x0a\x22Returns a dumb Promise resolved with nil.\x22\x0a<inlineJS: 'return Promise.resolve()'>",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [["inlineJS:", ["return Promise.resolve()"]]],
 messageSends: []
 }),
 $globals.Promise.a$cls);
@@ -124,6 +128,7 @@ args: ["aBlock"],
 source: "new: aBlock\x0a\x22Returns a Promise that is eventually resolved or rejected.\x0aPass a block that is called with one argument, model.\x0aYou should call model value: ... to resolve the promise\x0aand model signal: ... to reject the promise.\x0aIf error happens during run of the block,\x0apromise is rejected with that error as well.\x22\x0a<inlineJS: 'return new Promise(function (resolve, reject) {\x0a    var model = {value: resolve, signal: reject};\x0a    aBlock._value_(model);\x0a})'>",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [["inlineJS:", ["return new Promise(function (resolve, reject) {\x0a    var model = {value: resolve, signal: reject};\x0a    aBlock._value_(model);\x0a})"]]],
 messageSends: []
 }),
 $globals.Promise.a$cls);
@@ -148,6 +153,7 @@ args: ["anObject"],
 source: "signal: anObject\x0a\x22Returns a Promise rejected with anObject.\x22\x0a<inlineJS: 'return $recv(anObject)._in_(function (x) {return Promise.reject(x)})'>",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [["inlineJS:", ["return $recv(anObject)._in_(function (x) {return Promise.reject(x)})"]]],
 messageSends: []
 }),
 $globals.Promise.a$cls);
@@ -172,6 +178,7 @@ args: ["anObject"],
 source: "value: anObject\x0a\x22Returns a Promise resolved with anObject.\x22\x0a<inlineJS: 'return $recv(anObject)._in_(function (x) {return Promise.resolve(x)})'>",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [["inlineJS:", ["return $recv(anObject)._in_(function (x) {return Promise.resolve(x)})"]]],
 messageSends: []
 }),
 $globals.Promise.a$cls);
@@ -200,6 +207,7 @@ args: ["aBlock"],
 source: "catch: aBlock\x0a<inlineJS: 'return self.then(null, function (err) {return $core.seamless(function () {\x0a    return aBlock._value_(err);\x0a})})'>",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [["inlineJS:", ["return self.then(null, function (err) {return $core.seamless(function () {\x0a    return aBlock._value_(err);\x0a})})"]]],
 messageSends: []
 }),
 $globals.TThenable);
@@ -227,6 +235,7 @@ args: ["aClass", "aBlock"],
 source: "on: aClass do: aBlock\x0a<inlineJS: 'return self.then(null, function (err) {return $core.seamless(function () {\x0a    if (err._isKindOf_(aClass)) return aBlock._value_(err);\x0a    else throw err;\x0a})})'>",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [["inlineJS:", ["return self.then(null, function (err) {return $core.seamless(function () {\x0a    if (err._isKindOf_(aClass)) return aBlock._value_(err);\x0a    else throw err;\x0a})})"]]],
 messageSends: []
 }),
 $globals.TThenable);
@@ -250,6 +259,7 @@ args: ["aClass", "aBlock", "anotherBlock"],
 source: "on: aClass do: aBlock catch: anotherBlock\x0a\x09^ (self on: aClass do: aBlock) catch: anotherBlock",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["catch:", "on:do:"]
 }),
 $globals.TThenable);
@@ -289,6 +299,7 @@ args: ["aBlockOrArray"],
 source: "then: aBlockOrArray\x0a\x22Accepts a block or array of blocks.\x0aEach of blocks in the array or the singleton one is\x0aused in .then call to a promise, to accept a result\x0aand transform it to the result for the next one.\x0aIn case a block has more than one argument\x0aand result is an array, first n-1 elements of the array\x0aare put into additional arguments beyond the first.\x0aThe first argument always contains the result as-is.\x22\x0a<inlineJS: '\x0avar array = Array.isArray(aBlockOrArray) ? aBlockOrArray : [aBlockOrArray];\x0areturn array.reduce(function (soFar, aBlock) {\x0a    return soFar.then(typeof aBlock === \x22function\x22 && aBlock.length > 1 ?\x0a        function (result) {return $core.seamless(function () {\x0a            if (Array.isArray(result)) {\x0a                return aBlock._valueWithPossibleArguments_([result].concat(result.slice(0, aBlock.length-1)));\x0a            } else {\x0a                return aBlock._value_(result);\x0a            }\x0a        })} :\x0a        function (result) {return $core.seamless(function () {\x0a            return aBlock._value_(result);\x0a        })}\x0a    );\x0a}, self)'>",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [["inlineJS:", ["\x0avar array = Array.isArray(aBlockOrArray) ? aBlockOrArray : [aBlockOrArray];\x0areturn array.reduce(function (soFar, aBlock) {\x0a    return soFar.then(typeof aBlock === \x22function\x22 && aBlock.length > 1 ?\x0a        function (result) {return $core.seamless(function () {\x0a            if (Array.isArray(result)) {\x0a                return aBlock._valueWithPossibleArguments_([result].concat(result.slice(0, aBlock.length-1)));\x0a            } else {\x0a                return aBlock._value_(result);\x0a            }\x0a        })} :\x0a        function (result) {return $core.seamless(function () {\x0a            return aBlock._value_(result);\x0a        })}\x0a    );\x0a}, self)"]]],
 messageSends: []
 }),
 $globals.TThenable);
@@ -312,6 +323,7 @@ args: ["aBlockOrArray", "anotherBlock"],
 source: "then: aBlockOrArray catch: anotherBlock\x0a\x09^ (self then: aBlockOrArray) catch: anotherBlock",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["catch:", "then:"]
 }),
 $globals.TThenable);
@@ -335,6 +347,7 @@ args: ["aBlockOrArray", "aClass", "aBlock"],
 source: "then: aBlockOrArray on: aClass do: aBlock\x0a\x09^ (self then: aBlockOrArray) on: aClass do: aBlock",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["on:do:", "then:"]
 }),
 $globals.TThenable);
@@ -358,6 +371,7 @@ args: ["aBlockOrArray", "aClass", "aBlock", "anotherBlock"],
 source: "then: aBlockOrArray on: aClass do: aBlock catch: anotherBlock\x0a\x09^ ((self then: aBlockOrArray) on: aClass do: aBlock) catch: anotherBlock",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["catch:", "on:do:", "then:"]
 }),
 $globals.TThenable);

File diff suppressed because it is too large
+ 126 - 0
lang/src/Kernel-Tests.js


+ 12 - 0
lang/src/Platform-Browser.js

@@ -26,6 +26,7 @@ args: [],
 source: "globals\x0a\x09^ window",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.BrowserPlatform);
@@ -55,6 +56,7 @@ args: [],
 source: "newXhr\x0a\x09XMLHttpRequest\x0a\x09\x09ifNotNil: [ ^ NativeFunction constructorOf: XMLHttpRequest ]\x0a\x09\x09ifNil: [ self error: 'XMLHttpRequest not available.' ]",
 referencedClasses: ["XMLHttpRequest", "NativeFunction"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNotNil:ifNil:", "constructorOf:", "error:"]
 }),
 $globals.BrowserPlatform);
@@ -84,6 +86,7 @@ args: [],
 source: "initialize\x0a\x09self isFeasible ifTrue: [ Platform registerIfNone: self new ]",
 referencedClasses: ["Platform"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifTrue:", "isFeasible", "registerIfNone:", "new"]
 }),
 $globals.BrowserPlatform.a$cls);
@@ -108,6 +111,7 @@ args: [],
 source: "isFeasible\x0a<inlineJS: 'return typeof window !== \x22undefined\x22'>",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [["inlineJS:", ["return typeof window !== \x22undefined\x22"]]],
 messageSends: []
 }),
 $globals.BrowserPlatform.a$cls);
@@ -136,6 +140,7 @@ args: ["aString"],
 source: "alert: aString\x0a\x09^ window alert: aString",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["alert:"]
 }),
 $globals.BrowserTerminal);
@@ -159,6 +164,7 @@ args: ["aString"],
 source: "confirm: aString\x0a\x09^ window confirm: aString",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["confirm:"]
 }),
 $globals.BrowserTerminal);
@@ -182,6 +188,7 @@ args: ["aString"],
 source: "prompt: aString\x0a\x09^ window prompt: aString",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["prompt:"]
 }),
 $globals.BrowserTerminal);
@@ -205,6 +212,7 @@ args: ["aString", "defaultString"],
 source: "prompt: aString default: defaultString\x0a\x09^ window prompt: aString default: defaultString",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["prompt:default:"]
 }),
 $globals.BrowserTerminal);
@@ -234,6 +242,7 @@ args: [],
 source: "initialize\x0a\x09self isFeasible ifTrue: [ Terminal registerIfNone: self new ]",
 referencedClasses: ["Terminal"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifTrue:", "isFeasible", "registerIfNone:", "new"]
 }),
 $globals.BrowserTerminal.a$cls);
@@ -258,6 +267,7 @@ args: [],
 source: "isFeasible\x0a<inlineJS: 'return typeof window !== \x22undefined\x22'>",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [["inlineJS:", ["return typeof window !== \x22undefined\x22"]]],
 messageSends: []
 }),
 $globals.BrowserTerminal.a$cls);
@@ -281,6 +291,7 @@ args: ["aFrame"],
 source: "postMessageTo: aFrame\x0a^ self postMessageTo: aFrame origin: '*'",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["postMessageTo:origin:"]
 }),
 $globals.Object);
@@ -305,6 +316,7 @@ args: ["aFrame", "aString"],
 source: "postMessageTo: aFrame origin: aString\x0a<inlineJS: 'return aFrame.postMessage(self, aString)'>",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [["inlineJS:", ["return aFrame.postMessage(self, aString)"]]],
 messageSends: []
 }),
 $globals.Object);

+ 2 - 0
lang/src/Platform-DOM-Tests.js

@@ -29,6 +29,7 @@ args: [],
 source: "testEntityConversion\x0a\x09PlatformDom isFeasible ifTrue: [ self assert: '&copy;' htmlTextContent equals: '©' ]",
 referencedClasses: ["PlatformDom"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifTrue:", "isFeasible", "assert:equals:", "htmlTextContent"]
 }),
 $globals.PlatformDomTest);
@@ -65,6 +66,7 @@ args: [],
 source: "testTextContentDoesNotRunScript\x0a\x09PlatformDom isFeasible ifTrue: [\x0a\x09\x09self shouldnt: [ '<script>throw new Error(\x22Intentional\x22)</script>' htmlTextContent ] raise: Error ]",
 referencedClasses: ["PlatformDom", "Error"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifTrue:", "isFeasible", "shouldnt:raise:", "htmlTextContent"]
 }),
 $globals.PlatformDomTest);

+ 8 - 0
lang/src/Platform-DOM.js

@@ -28,6 +28,7 @@ args: ["anObject"],
 source: "isDomNode: anObject\x0a<inlineJS: '\x0a\x09return anObject.nodeType > 0 &&\x0a\x09\x09Object.prototype.toString.call(anObject) !== \x22[object Object]\x22\x0a'>",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [["inlineJS:", ["\x0a\x09return anObject.nodeType > 0 &&\x0a\x09\x09Object.prototype.toString.call(anObject) !== \x22[object Object]\x22\x0a"]]],
 messageSends: []
 }),
 $globals.PlatformDom.a$cls);
@@ -63,6 +64,7 @@ args: [],
 source: "isFeasible\x0a<inlineJS: '\x0a  if (typeof document === \x22undefined\x22) return false;\x0a  try {\x0a    var d = document.createElement(\x22div\x22),\x0a\x09  f = document.createDocumentFragment(),\x0a\x09  t = document.createTextNode(\x22Hello, Amber!\x22);\x0a\x09f.appendChild(t);\x0a\x09d.insertBefore(f, null);\x0a\x09return d.innerHTML === \x22Hello, Amber!\x22;\x0a  } catch (e) {\x0a    return false;\x0a  }\x0a'>",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [["inlineJS:", ["\x0a  if (typeof document === \x22undefined\x22) return false;\x0a  try {\x0a    var d = document.createElement(\x22div\x22),\x0a\x09  f = document.createDocumentFragment(),\x0a\x09  t = document.createTextNode(\x22Hello, Amber!\x22);\x0a\x09f.appendChild(t);\x0a\x09d.insertBefore(f, null);\x0a\x09return d.innerHTML === \x22Hello, Amber!\x22;\x0a  } catch (e) {\x0a    return false;\x0a  }\x0a"]]],
 messageSends: []
 }),
 $globals.PlatformDom.a$cls);
@@ -87,6 +89,7 @@ args: ["aString", "anObject"],
 source: "newCustomEvent: aString detail: anObject\x0a<inlineJS: 'return new CustomEvent(aString, {detail: anObject})'>",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [["inlineJS:", ["return new CustomEvent(aString, {detail: anObject})"]]],
 messageSends: []
 }),
 $globals.PlatformDom.a$cls);
@@ -111,6 +114,7 @@ args: ["aDomList"],
 source: "toArray: aDomList\x0a<inlineJS: 'return Array.prototype.slice.call(aDomList)'>",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [["inlineJS:", ["return Array.prototype.slice.call(aDomList)"]]],
 messageSends: []
 }),
 $globals.PlatformDom.a$cls);
@@ -145,6 +149,7 @@ args: [],
 source: "asDomNode\x0a\x09| fragment |\x0a\x09fragment := document createDocumentFragment.\x0a\x09self do: [ :each | fragment appendChild: each asDomNode ].\x0a\x09^ fragment",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["createDocumentFragment", "do:", "appendChild:", "asDomNode"]
 }),
 $globals.Collection);
@@ -183,6 +188,7 @@ args: [],
 source: "asDomNode\x0a\x09(PlatformDom isDomNode: jsObject)\x0a\x09\x09ifTrue: [ ^ jsObject ]\x0a\x09\x09ifFalse: [ ^ super asDomNode ]",
 referencedClasses: ["PlatformDom"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifTrue:ifFalse:", "isDomNode:", "asDomNode"]
 }),
 $globals.JSObjectProxy);
@@ -206,6 +212,7 @@ args: [],
 source: "asDomNode\x0a\x09^ document createTextNode: self asString",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["createTextNode:", "asString"]
 }),
 $globals.String);
@@ -230,6 +237,7 @@ args: [],
 source: "htmlTextContent\x0a<inlineJS: 'var d=document.createElement(\x22div\x22);d.innerHTML=self;return d.textContent||d.innerText;'>",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [["inlineJS:", ["var d=document.createElement(\x22div\x22);d.innerHTML=self;return d.textContent||d.innerText;"]]],
 messageSends: []
 }),
 $globals.String);

File diff suppressed because it is too large
+ 126 - 0
lang/src/Platform-ImportExport.js


+ 4 - 0
lang/src/Platform-Node.js

@@ -26,6 +26,7 @@ args: [],
 source: "globals\x0a\x09^ global",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.NodePlatform);
@@ -55,6 +56,7 @@ args: [],
 source: "newXhr\x0a\x09XMLHttpRequest\x0a\x09\x09ifNotNil: [ ^ XMLHttpRequest new ]\x0a\x09\x09ifNil: [ self error: 'XMLHttpRequest not available.' ]",
 referencedClasses: ["XMLHttpRequest"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNotNil:ifNil:", "new", "error:"]
 }),
 $globals.NodePlatform);
@@ -84,6 +86,7 @@ args: [],
 source: "initialize\x0a\x09self isFeasible ifTrue: [ Platform registerIfNone: self new ]",
 referencedClasses: ["Platform"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifTrue:", "isFeasible", "registerIfNone:", "new"]
 }),
 $globals.NodePlatform.a$cls);
@@ -108,6 +111,7 @@ args: [],
 source: "isFeasible\x0a<inlineJS: 'return typeof process !== \x22undefined\x22 && process && process.versions && process.versions.node != null'>",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [["inlineJS:", ["return typeof process !== \x22undefined\x22 && process && process.versions && process.versions.node != null"]]],
 messageSends: []
 }),
 $globals.NodePlatform.a$cls);

+ 79 - 0
lang/src/Platform-Services.js

@@ -38,6 +38,7 @@ args: ["anError"],
 source: "handleError: anError\x0a\x09anError context ifNotNil: [ self logErrorContext: anError context ].\x0a\x09self logError: anError",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNotNil:", "context", "logErrorContext:", "logError:"]
 }),
 $globals.ConsoleErrorHandler);
@@ -62,6 +63,7 @@ args: ["aString"],
 source: "log: aString\x0a\x09console log: aString",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["log:"]
 }),
 $globals.ConsoleErrorHandler);
@@ -96,6 +98,7 @@ args: ["aContext"],
 source: "logContext: aContext\x0a\x09aContext home ifNotNil: [\x0a\x09\x09self logContext: aContext home ].\x0a\x09self log: aContext asString",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNotNil:", "home", "logContext:", "log:", "asString"]
 }),
 $globals.ConsoleErrorHandler);
@@ -120,6 +123,7 @@ args: ["anError"],
 source: "logError: anError\x0a\x09self log: anError messageText",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["log:", "messageText"]
 }),
 $globals.ConsoleErrorHandler);
@@ -157,6 +161,7 @@ args: ["aContext"],
 source: "logErrorContext: aContext\x0a\x09aContext ifNotNil: [\x0a\x09\x09aContext home ifNotNil: [\x0a\x09\x09\x09self logContext: aContext home ]]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNotNil:", "home", "logContext:"]
 }),
 $globals.ConsoleErrorHandler);
@@ -183,6 +188,7 @@ args: [],
 source: "initialize\x0a\x09ErrorHandler registerIfNone: self new",
 referencedClasses: ["ErrorHandler"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["registerIfNone:", "new"]
 }),
 $globals.ConsoleErrorHandler.a$cls);
@@ -206,6 +212,7 @@ args: [],
 source: "clear\x0a\x09\x22no op\x22",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.ConsoleTranscript);
@@ -224,6 +231,7 @@ args: [],
 source: "cr\x0a\x09\x22no op\x22",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.ConsoleTranscript);
@@ -242,6 +250,7 @@ args: [],
 source: "open",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.ConsoleTranscript);
@@ -266,6 +275,7 @@ args: ["anObject"],
 source: "show: anObject\x0a\x22Smalltalk objects should have no trouble displaying themselves on the Transcript; Javascript objects don't know how, so must be wrapped in a JSObectProxy.\x22\x0a<inlineJS: 'console.log(String($recv(anObject)._asString()))'>",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [["inlineJS:", ["console.log(String($recv(anObject)._asString()))"]]],
 messageSends: []
 }),
 $globals.ConsoleTranscript);
@@ -291,6 +301,7 @@ args: [],
 source: "initialize\x0a\x09Transcript registerIfNone: self new",
 referencedClasses: ["Transcript"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["registerIfNone:", "new"]
 }),
 $globals.ConsoleTranscript.a$cls);
@@ -338,6 +349,7 @@ args: ["aString", "aClass"],
 source: "addInstVarNamed: aString to: aClass\x0a\x09| newInstVars |\x0a\x09newInstVars := aClass instanceVariableNames copyWith: aString.\x0a\x0a\x09aClass isMetaclass\x0a\x09\x09ifTrue: [ self classBuilder\x0a\x09\x09\x09class: aClass slots: newInstVars ]\x0a\x09\x09ifFalse: [ self classBuilder\x0a\x09\x09\x09addSubclassOf: aClass superclass \x0a\x09\x09\x09named: aClass name \x0a\x09\x09\x09instanceVariableNames: newInstVars\x0a\x09\x09\x09package: aClass package name ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["copyWith:", "instanceVariableNames", "ifTrue:ifFalse:", "isMetaclass", "class:slots:", "classBuilder", "addSubclassOf:named:instanceVariableNames:package:", "superclass", "name", "package"]
 }),
 $globals.Environment);
@@ -361,6 +373,7 @@ args: [],
 source: "allSelectors\x0a\x09^ Smalltalk core allSelectors",
 referencedClasses: ["Smalltalk"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["allSelectors", "core"]
 }),
 $globals.Environment);
@@ -392,6 +405,7 @@ args: [],
 source: "availableClassNames\x0a\x09^ Smalltalk classes \x0a\x09\x09collect: [ :each | each name ]",
 referencedClasses: ["Smalltalk"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["collect:", "classes", "name"]
 }),
 $globals.Environment);
@@ -423,6 +437,7 @@ args: [],
 source: "availablePackageNames\x0a\x09^ Smalltalk packages \x0a\x09\x09collect: [ :each | each name ]",
 referencedClasses: ["Smalltalk"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["collect:", "packages", "name"]
 }),
 $globals.Environment);
@@ -458,6 +473,7 @@ args: ["aClass"],
 source: "availableProtocolsFor: aClass\x0a\x09| protocols |\x0a\x09\x0a\x09protocols := aClass protocols.\x0a\x09aClass superclass ifNotNil: [ protocols addAll: (self availableProtocolsFor: aClass superclass) ].\x0a\x09^ protocols asSet asArray sort",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["protocols", "ifNotNil:", "superclass", "addAll:", "availableProtocolsFor:", "sort", "asArray", "asSet"]
 }),
 $globals.Environment);
@@ -481,6 +497,7 @@ args: [],
 source: "classBuilder\x0a\x09^ ClassBuilder new",
 referencedClasses: ["ClassBuilder"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["new"]
 }),
 $globals.Environment);
@@ -510,6 +527,7 @@ args: ["aString"],
 source: "classNamed: aString\x0a\x09^ (Smalltalk globals at: aString asSymbol)\x0a\x09\x09ifNil: [ self error: 'Invalid class name' ]",
 referencedClasses: ["Smalltalk"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNil:", "at:", "globals", "asSymbol", "error:"]
 }),
 $globals.Environment);
@@ -533,6 +551,7 @@ args: [],
 source: "classes\x0a\x09^ Smalltalk classes",
 referencedClasses: ["Smalltalk"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["classes"]
 }),
 $globals.Environment);
@@ -557,6 +576,7 @@ args: ["aPackage", "aBlock", "anotherBlock"],
 source: "commitPackage: aPackage onSuccess: aBlock onError: anotherBlock\x0a\x09aPackage transport\x0a\x09\x09commitOnSuccess: aBlock\x0a\x09\x09onError: anotherBlock",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["commitOnSuccess:onError:", "transport"]
 }),
 $globals.Environment);
@@ -581,6 +601,7 @@ args: ["aString", "aClass"],
 source: "compileClassComment: aString for: aClass\x0a\x09aClass comment: aString",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["comment:"]
 }),
 $globals.Environment);
@@ -621,6 +642,7 @@ args: ["aString"],
 source: "compileClassDefinition: aString\x0a\x09[ self evaluate: aString for: DoIt new ]\x0a\x09\x09on: Error\x0a\x09\x09do: [ :error | Terminal alert: error messageText ]",
 referencedClasses: ["DoIt", "Error", "Terminal"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["on:do:", "evaluate:for:", "new", "alert:", "messageText"]
 }),
 $globals.Environment);
@@ -644,6 +666,7 @@ args: ["sourceCode", "class", "protocol"],
 source: "compileMethod: sourceCode for: class protocol: protocol\x0a\x09^ class\x0a\x09\x09compile: sourceCode\x0a\x09\x09protocol: protocol",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["compile:protocol:"]
 }),
 $globals.Environment);
@@ -679,6 +702,7 @@ args: ["aClass", "aClassName"],
 source: "copyClass: aClass to: aClassName\x0a\x09(Smalltalk globals at: aClassName)\x0a\x09\x09ifNotNil: [ self error: 'A class named ', aClassName, ' already exists' ].\x0a\x09\x09\x0a\x09ClassBuilder new copyClass: aClass named: aClassName",
 referencedClasses: ["Smalltalk", "ClassBuilder"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNotNil:", "at:", "globals", "error:", ",", "copyClass:named:", "new"]
 }),
 $globals.Environment);
@@ -702,6 +726,7 @@ args: [],
 source: "doItReceiver\x0a\x09^ DoIt new",
 referencedClasses: ["DoIt"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["new"]
 }),
 $globals.Environment);
@@ -725,6 +750,7 @@ args: ["aString", "anObject"],
 source: "evaluate: aString for: anObject\x0a\x09^ Evaluator evaluate: aString for: anObject",
 referencedClasses: ["Evaluator"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["evaluate:for:"]
 }),
 $globals.Environment);
@@ -763,6 +789,7 @@ args: ["aBlock", "anErrorClass", "exceptionBlock"],
 source: "evaluate: aBlock on: anErrorClass do: exceptionBlock\x0a\x09\x22Evaluate a block and catch exceptions happening on the environment stack\x22\x0a\x09\x0a\x09aBlock tryCatch: [ :exception | \x0a\x09\x09(exception isKindOf: (self classNamed: anErrorClass name))\x0a\x09\x09\x09ifTrue: [ exceptionBlock value: exception ]\x0a \x09\x09\x09ifFalse: [ exception pass ] ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["tryCatch:", "ifTrue:ifFalse:", "isKindOf:", "classNamed:", "name", "value:", "pass"]
 }),
 $globals.Environment);
@@ -787,6 +814,7 @@ args: ["anObject"],
 source: "inspect: anObject\x0a\x09Inspector inspect: anObject",
 referencedClasses: ["Inspector"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["inspect:"]
 }),
 $globals.Environment);
@@ -825,6 +853,7 @@ args: ["aClass", "aPackageName"],
 source: "moveClass: aClass toPackage: aPackageName\x0a\x09| package |\x0a\x09\x0a\x09package := Package named: aPackageName.\x0a\x09package ifNil: [ self error: 'Invalid package name' ].\x0a\x09package == aClass package ifTrue: [ ^ self ].\x0a\x09\x0a\x09aClass package: package.\x0a\x09aClass recompile",
 referencedClasses: ["Package"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["named:", "ifNil:", "error:", "ifTrue:", "==", "package", "package:", "recompile"]
 }),
 $globals.Environment);
@@ -871,6 +900,7 @@ args: ["aMethod", "aClassName"],
 source: "moveMethod: aMethod toClass: aClassName\x0a\x09| destinationClass |\x0a\x09\x0a\x09destinationClass := self classNamed: aClassName.\x0a\x09destinationClass == aMethod methodClass ifTrue: [ ^ self ].\x0a\x09\x0a\x09aMethod methodClass isMetaclass ifTrue: [ \x0a\x09\x09destinationClass := destinationClass theMetaClass ].\x0a\x09\x0a\x09destinationClass \x0a\x09\x09compile: aMethod source\x0a\x09\x09protocol: aMethod protocol.\x0a\x09aMethod methodClass \x0a\x09\x09removeCompiledMethod: aMethod",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["classNamed:", "ifTrue:", "==", "methodClass", "isMetaclass", "theMetaClass", "compile:protocol:", "source", "protocol", "removeCompiledMethod:"]
 }),
 $globals.Environment);
@@ -896,6 +926,7 @@ args: ["aMethod", "aProtocol"],
 source: "moveMethod: aMethod toProtocol: aProtocol\x0a\x09aMethod protocol: aProtocol.\x0a\x0a\x09aMethod methodClass\x0a\x09\x09compile: aMethod source\x0a\x09\x09protocol: aMethod protocol",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["protocol:", "compile:protocol:", "methodClass", "source", "protocol"]
 }),
 $globals.Environment);
@@ -919,6 +950,7 @@ args: [],
 source: "packages\x0a\x09^ Smalltalk packages",
 referencedClasses: ["Smalltalk"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["packages"]
 }),
 $globals.Environment);
@@ -943,6 +975,7 @@ args: ["anErrorHandler"],
 source: "registerErrorHandler: anErrorHandler\x0a\x09ErrorHandler register: anErrorHandler",
 referencedClasses: ["ErrorHandler"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["register:"]
 }),
 $globals.Environment);
@@ -967,6 +1000,7 @@ args: ["aFinder"],
 source: "registerFinder: aFinder\x0a\x09Finder register: aFinder",
 referencedClasses: ["Finder"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["register:"]
 }),
 $globals.Environment);
@@ -991,6 +1025,7 @@ args: ["anInspector"],
 source: "registerInspector: anInspector\x0a\x09Inspector register: anInspector",
 referencedClasses: ["Inspector"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["register:"]
 }),
 $globals.Environment);
@@ -1015,6 +1050,7 @@ args: ["aProgressHandler"],
 source: "registerProgressHandler: aProgressHandler\x0a\x09ProgressHandler register: aProgressHandler",
 referencedClasses: ["ProgressHandler"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["register:"]
 }),
 $globals.Environment);
@@ -1039,6 +1075,7 @@ args: ["aTranscript"],
 source: "registerTranscript: aTranscript\x0a\x09Transcript register: aTranscript",
 referencedClasses: ["Transcript"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["register:"]
 }),
 $globals.Environment);
@@ -1063,6 +1100,7 @@ args: ["aClass"],
 source: "removeClass: aClass\x0a\x09Smalltalk removeClass: aClass",
 referencedClasses: ["Smalltalk"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["removeClass:"]
 }),
 $globals.Environment);
@@ -1087,6 +1125,7 @@ args: ["aMethod"],
 source: "removeMethod: aMethod\x0a\x09aMethod methodClass removeCompiledMethod: aMethod",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["removeCompiledMethod:", "methodClass"]
 }),
 $globals.Environment);
@@ -1119,6 +1158,7 @@ args: ["aString", "aClass"],
 source: "removeProtocol: aString from: aClass\x0a\x09(aClass methodsInProtocol: aString)\x0a\x09\x09do: [ :each | aClass removeCompiledMethod: each ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["do:", "methodsInProtocol:", "removeCompiledMethod:"]
 }),
 $globals.Environment);
@@ -1154,6 +1194,7 @@ args: ["aClass", "aClassName"],
 source: "renameClass: aClass to: aClassName\x0a\x09(Smalltalk globals at: aClassName)\x0a\x09\x09ifNotNil: [ self error: 'A class named ', aClassName, ' already exists' ].\x0a\x09\x09\x0a\x09ClassBuilder new renameClass: aClass to: aClassName",
 referencedClasses: ["Smalltalk", "ClassBuilder"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNotNil:", "at:", "globals", "error:", ",", "renameClass:to:", "new"]
 }),
 $globals.Environment);
@@ -1178,6 +1219,7 @@ args: ["aPackageName", "aNewPackageName"],
 source: "renamePackage: aPackageName to: aNewPackageName\x0a        Smalltalk renamePackage: aPackageName to: aNewPackageName",
 referencedClasses: ["Smalltalk"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["renamePackage:to:"]
 }),
 $globals.Environment);
@@ -1210,6 +1252,7 @@ args: ["aString", "anotherString", "aClass"],
 source: "renameProtocol: aString to: anotherString in: aClass\x0a\x09(aClass methodsInProtocol: aString)\x0a\x09\x09do: [ :each | each protocol: anotherString ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["do:", "methodsInProtocol:", "protocol:"]
 }),
 $globals.Environment);
@@ -1234,6 +1277,7 @@ args: ["aClass", "aString"],
 source: "setClassCommentOf: aClass to: aString\x0a\x09aClass comment: aString",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["comment:"]
 }),
 $globals.Environment);
@@ -1257,6 +1301,7 @@ args: [],
 source: "systemAnnouncer\x0a\x09^ (Smalltalk globals at: #SystemAnnouncer) current",
 referencedClasses: ["Smalltalk"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["current", "at:", "globals"]
 }),
 $globals.Environment);
@@ -1287,6 +1332,7 @@ args: ["aBlock", "aCollection", "aString"],
 source: "do: aBlock on: aCollection displaying: aString\x0a\x09aCollection do: aBlock",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["do:"]
 }),
 $globals.NullProgressHandler);
@@ -1313,6 +1359,7 @@ args: [],
 source: "initialize\x0a\x09ProgressHandler registerIfNone: self new",
 referencedClasses: ["ProgressHandler"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["registerIfNone:", "new"]
 }),
 $globals.NullProgressHandler.a$cls);
@@ -1338,6 +1385,7 @@ args: [],
 source: "current\x0a\x09^ current",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.Service.a$cls);
@@ -1362,6 +1410,7 @@ args: [],
 source: "new\x0a\x09self shouldNotImplement",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["shouldNotImplement"]
 }),
 $globals.Service.a$cls);
@@ -1381,6 +1430,7 @@ args: ["anObject"],
 source: "register: anObject\x0a\x09current := anObject",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.Service.a$cls);
@@ -1411,6 +1461,7 @@ args: ["anObject"],
 source: "registerIfNone: anObject\x0a\x09self current ifNil: [ self register: anObject ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNil:", "current", "register:"]
 }),
 $globals.Service.a$cls);
@@ -1464,6 +1515,7 @@ args: ["anError"],
 source: "handleError: anError\x0a\x09([ anError isSmalltalkError ] tryCatch: [ false ])\x0a\x09\x09ifTrue: [ self handleUnhandledError: anError ]\x0a\x09\x09ifFalse: [\x0a\x09\x09\x09| smalltalkError |\x0a\x09\x09\x09smalltalkError := JavaScriptException on: anError.\x0a\x09\x09\x09smalltalkError wrap.\x0a\x09\x09\x09self handleUnhandledError: smalltalkError ]",
 referencedClasses: ["JavaScriptException"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifTrue:ifFalse:", "tryCatch:", "isSmalltalkError", "handleUnhandledError:", "on:", "wrap"]
 }),
 $globals.ErrorHandler.a$cls);
@@ -1493,6 +1545,7 @@ args: ["anError"],
 source: "handleUnhandledError: anError\x0a\x09anError wasHandled ifFalse: [\x0a\x09\x09self current handleError: anError.\x0a\x09\x09anError beHandled ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifFalse:", "wasHandled", "handleError:", "current", "beHandled"]
 }),
 $globals.ErrorHandler.a$cls);
@@ -1522,6 +1575,7 @@ args: ["aClass"],
 source: "findClass: aClass\x0a\x09^ self current findClass: aClass",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["findClass:", "current"]
 }),
 $globals.Finder.a$cls);
@@ -1545,6 +1599,7 @@ args: ["aCompiledMethod"],
 source: "findMethod: aCompiledMethod\x0a\x09^ self current findMethod: aCompiledMethod",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["findMethod:", "current"]
 }),
 $globals.Finder.a$cls);
@@ -1568,6 +1623,7 @@ args: ["aString"],
 source: "findString: aString\x0a\x09^ self current findString: aString",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["findString:", "current"]
 }),
 $globals.Finder.a$cls);
@@ -1597,6 +1653,7 @@ args: ["anObject"],
 source: "inspect: anObject\x0a\x09^ self current inspect: anObject",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["inspect:", "current"]
 }),
 $globals.Inspector.a$cls);
@@ -1626,6 +1683,7 @@ args: [],
 source: "globals\x0a\x09^ self current globals",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["globals", "current"]
 }),
 $globals.Platform.a$cls);
@@ -1655,6 +1713,7 @@ args: ["aString"],
 source: "includesGlobal: aString\x0a\x09^ self globals \x0a\x09\x09at: aString \x0a\x09\x09ifPresent: [ true ] \x0a\x09\x09ifAbsent: [ false ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["at:ifPresent:ifAbsent:", "globals"]
 }),
 $globals.Platform.a$cls);
@@ -1678,6 +1737,7 @@ args: [],
 source: "newXhr\x0a\x09^ self current newXhr",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["newXhr", "current"]
 }),
 $globals.Platform.a$cls);
@@ -1708,6 +1768,7 @@ args: ["aBlock", "aCollection", "aString"],
 source: "do: aBlock on: aCollection displaying: aString\x0a\x09self current do: aBlock on: aCollection displaying: aString",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["do:on:displaying:", "current"]
 }),
 $globals.ProgressHandler.a$cls);
@@ -1737,6 +1798,7 @@ args: ["aString"],
 source: "alert: aString\x0a\x09^ self current alert: aString",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["alert:", "current"]
 }),
 $globals.Terminal.a$cls);
@@ -1760,6 +1822,7 @@ args: ["aString"],
 source: "confirm: aString\x0a\x09^ self current confirm: aString",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["confirm:", "current"]
 }),
 $globals.Terminal.a$cls);
@@ -1783,6 +1846,7 @@ args: ["aString"],
 source: "prompt: aString\x0a\x09^ self current prompt: aString",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["prompt:", "current"]
 }),
 $globals.Terminal.a$cls);
@@ -1806,6 +1870,7 @@ args: ["aString", "defaultString"],
 source: "prompt: aString default: defaultString\x0a\x09^ self current prompt: aString default: defaultString",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["prompt:default:", "current"]
 }),
 $globals.Terminal.a$cls);
@@ -1836,6 +1901,7 @@ args: [],
 source: "clear\x0a\x09self current clear",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["clear", "current"]
 }),
 $globals.Transcript.a$cls);
@@ -1860,6 +1926,7 @@ args: [],
 source: "cr\x0a\x09self current show: String cr",
 referencedClasses: ["String"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["show:", "current", "cr"]
 }),
 $globals.Transcript.a$cls);
@@ -1884,6 +1951,7 @@ args: ["anObject"],
 source: "inspect: anObject\x0a\x09self show: anObject",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["show:"]
 }),
 $globals.Transcript.a$cls);
@@ -1908,6 +1976,7 @@ args: [],
 source: "open\x0a\x09self current open",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["open", "current"]
 }),
 $globals.Transcript.a$cls);
@@ -1932,6 +2001,7 @@ args: ["anObject"],
 source: "show: anObject\x0a\x09self current show: anObject",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["show:", "current"]
 }),
 $globals.Transcript.a$cls);
@@ -1976,6 +2046,7 @@ args: ["anInspector"],
 source: "inspectOn: anInspector\x0a\x09| variables |\x0a\x09variables := Dictionary new.\x0a\x09variables at: '#self' put: self.\x0a\x09variables at: '#keys' put: self keys.\x0a\x09self keysAndValuesDo: [ :key :value |\x0a\x09\x09variables at: key put: value ].\x0a\x09anInspector\x0a\x09\x09setLabel: self printString;\x0a\x09\x09setVariables: variables",
 referencedClasses: ["Dictionary"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["new", "at:put:", "keys", "keysAndValuesDo:", "setLabel:", "printString", "setVariables:"]
 }),
 $globals.AssociativeCollection);
@@ -2016,6 +2087,7 @@ args: ["anInspector"],
 source: "inspectOn: anInspector\x0a\x09| variables |\x0a\x09variables := Dictionary new.\x0a\x09variables at: '#self' put: self.\x0a\x09self withIndexDo: [ :each :i |\x0a\x09\x09variables at: i put: each ].\x0a\x09anInspector\x0a\x09\x09setLabel: self printString;\x0a\x09\x09setVariables: variables",
 referencedClasses: ["Dictionary"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["new", "at:put:", "withIndexDo:", "setLabel:", "printString", "setVariables:"]
 }),
 $globals.Collection);
@@ -2072,6 +2144,7 @@ args: ["anInspector"],
 source: "inspectOn: anInspector\x0a\x09| variables |\x0a\x09variables := Dictionary new.\x0a\x09variables at: '#self' put: self.\x0a\x09variables at: '#year' put: self year.\x0a\x09variables at: '#month' put: self month.\x0a\x09variables at: '#day' put: self day.\x0a\x09variables at: '#hours' put: self hours.\x0a\x09variables at: '#minutes' put: self minutes.\x0a\x09variables at: '#seconds' put: self seconds.\x0a\x09variables at: '#milliseconds' put: self milliseconds.\x0a\x09anInspector\x0a\x09\x09setLabel: self printString;\x0a\x09\x09setVariables: variables",
 referencedClasses: ["Dictionary"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["new", "at:put:", "year", "month", "day", "hours", "minutes", "seconds", "milliseconds", "setLabel:", "printString", "setVariables:"]
 }),
 $globals.Date);
@@ -2101,6 +2174,7 @@ args: ["anInspector"],
 source: "inspectOn: anInspector\x0a\x09| variables |\x0a\x09variables := Dictionary new.\x0a\x09variables at: '#self' put: self jsObject.\x0a\x09anInspector setLabel: self printString.\x0a\x09JSObjectProxy addObjectVariablesTo: variables ofProxy: self.\x0a\x09anInspector setVariables: variables",
 referencedClasses: ["Dictionary", "JSObjectProxy"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["new", "at:put:", "jsObject", "setLabel:", "printString", "addObjectVariablesTo:ofProxy:", "setVariables:"]
 }),
 $globals.JSObjectProxy);
@@ -2141,6 +2215,7 @@ args: ["anInspector"],
 source: "inspectOn: anInspector\x0a\x09| variables |\x0a\x09variables := Dictionary new.\x0a\x09variables at: '#self' put: self.\x0a\x09self class allInstanceVariableNames do: [ :each |\x0a\x09\x09variables at: each put: (self instVarAt: each) ].\x0a\x09anInspector\x0a\x09\x09setLabel: self printString;\x0a\x09\x09setVariables: variables",
 referencedClasses: ["Dictionary"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["new", "at:put:", "do:", "allInstanceVariableNames", "class", "instVarAt:", "setLabel:", "printString", "setVariables:"]
 }),
 $globals.Object);
@@ -2165,6 +2240,7 @@ args: ["aBlock", "aString"],
 source: "do: aBlock displayingProgress: aString\x0a\x09ProgressHandler \x0a\x09\x09do: aBlock \x0a\x09\x09on: self \x0a\x09\x09displaying: aString",
 referencedClasses: ["ProgressHandler"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["do:on:displaying:"]
 }),
 $globals.SequenceableCollection);
@@ -2208,6 +2284,7 @@ args: ["anInspector"],
 source: "inspectOn: anInspector\x0a\x09| variables i |\x0a\x09variables := Dictionary new.\x0a\x09variables at: '#self' put: self.\x0a\x09i := 1.\x0a\x09self do: [ :each |\x0a\x09\x09variables at: i put: each.\x0a\x09\x09i := i + 1 ].\x0a\x09anInspector\x0a\x09\x09setLabel: self printString;\x0a\x09\x09setVariables: variables",
 referencedClasses: ["Dictionary"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["new", "at:put:", "do:", "+", "setLabel:", "printString", "setVariables:"]
 }),
 $globals.Set);
@@ -2260,6 +2337,7 @@ args: ["anInspector"],
 source: "inspectOn: anInspector\x0a\x09| label |\x0a\x09super inspectOn: anInspector.\x0a\x09self printString size > 30\x0a\x09\x09ifTrue: [ label := (self printString copyFrom: 1 to: 30), '...''' ]\x0a\x09\x09ifFalse: [ label := self printString ].\x0a\x09anInspector setLabel: label",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["inspectOn:", "ifTrue:ifFalse:", ">", "size", "printString", ",", "copyFrom:to:", "setLabel:"]
 }),
 $globals.String);
@@ -2316,6 +2394,7 @@ args: ["anInspector"],
 source: "inspectOn: anInspector\x0a\x09| variables |\x0a\x09variables := Dictionary new.\x0a\x09variables at: '#self' put: self.\x0a\x09variables at: '#home' put: self home.\x0a\x09variables at: '#receiver' put: self receiver.\x0a\x09variables at: '#selector' put: self selector.\x0a\x09variables at: '#locals' put: self locals.\x0a\x09self class instanceVariableNames do: [ :each |\x0a\x09\x09variables at: each put: (self instVarAt: each) ].\x0a\x09anInspector\x0a\x09\x09setLabel: self printString;\x0a\x09\x09setVariables: variables",
 referencedClasses: ["Dictionary"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["new", "at:put:", "home", "receiver", "selector", "locals", "do:", "instanceVariableNames", "class", "instVarAt:", "setLabel:", "printString", "setVariables:"]
 }),
 $globals.TMethodContext);

+ 23 - 0
lang/src/SUnit-Tests.js

@@ -29,6 +29,7 @@ args: [],
 source: "setUp\x0a\x09empty := Set new.\x0a\x09full := Set with: 5 with: #abc",
 referencedClasses: ["Set"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["new", "with:with:"]
 }),
 $globals.ExampleSetTest);
@@ -54,6 +55,7 @@ args: [],
 source: "testAdd\x0a\x09empty add: 5.\x0a\x09self assert: (empty includes: 5)",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["add:", "assert:", "includes:"]
 }),
 $globals.ExampleSetTest);
@@ -79,6 +81,7 @@ args: [],
 source: "testGrow\x0a\x09empty addAll: (1 to: 100).\x0a\x09self assert: empty size equals: 100",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["addAll:", "to:", "assert:equals:", "size"]
 }),
 $globals.ExampleSetTest);
@@ -123,6 +126,7 @@ args: [],
 source: "testIllegal\x0a\x09self\x0a\x09\x09should: [ empty at: 5 ]\x0a\x09\x09raise: Error.\x0a\x09self\x0a\x09\x09should: [ empty at: 5 put: #abc ]\x0a\x09\x09raise: Error",
 referencedClasses: ["Error"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["should:raise:", "at:", "at:put:"]
 }),
 $globals.ExampleSetTest);
@@ -156,6 +160,7 @@ args: [],
 source: "testIncludes\x0a\x09self assert: (full includes: 5).\x0a\x09self assert: (full includes: #abc)",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["assert:", "includes:"]
 }),
 $globals.ExampleSetTest);
@@ -198,6 +203,7 @@ args: [],
 source: "testOccurrences\x0a\x09self assert: (empty occurrencesOf: 0) equals: 0.\x0a\x09self assert: (full occurrencesOf: 5) equals: 1.\x0a\x09full add: 5.\x0a\x09self assert: (full occurrencesOf: 5) equals: 1",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["assert:equals:", "occurrencesOf:", "add:"]
 }),
 $globals.ExampleSetTest);
@@ -229,6 +235,7 @@ args: [],
 source: "testRemove\x0a\x09full remove: 5.\x0a\x09self assert: (full includes: #abc).\x0a\x09self deny: (full includes: 5)",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["remove:", "assert:", "includes:", "deny:"]
 }),
 $globals.ExampleSetTest);
@@ -267,6 +274,7 @@ args: [],
 source: "fakeError\x0a\x09flag := 'bad'.\x0a\x09self timeout: 30.\x0a\x09flag := (self async: [ flag := 'ok'. self error: 'Intentional' ]) valueWithTimeout: 20",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["timeout:", "valueWithTimeout:", "async:", "error:"]
 }),
 $globals.SUnitAsyncTest);
@@ -301,6 +309,7 @@ args: [],
 source: "fakeErrorFailingInTearDown\x0a\x09flag := 'bad'.\x0a\x09self timeout: 30.\x0a\x09flag := (self async: [ self error: 'Intentional' ]) valueWithTimeout: 20",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["timeout:", "valueWithTimeout:", "async:", "error:"]
 }),
 $globals.SUnitAsyncTest);
@@ -336,6 +345,7 @@ args: [],
 source: "fakeFailure\x0a\x09flag := 'bad'.\x0a\x09self timeout: 30.\x0a\x09flag := (self async: [ flag := 'ok'. self assert: false ]) valueWithTimeout: 20",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["timeout:", "valueWithTimeout:", "async:", "assert:"]
 }),
 $globals.SUnitAsyncTest);
@@ -389,6 +399,7 @@ args: [],
 source: "fakeMultipleTimeoutFailing\x0a\x09self timeout: 100.\x0a\x09(self async: [ \x0a\x09\x09self timeout: 20.\x0a\x09\x09(self async: [ self finished ]) valueWithTimeout: 30\x0a\x09]) valueWithTimeout: 20",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished"]
 }),
 $globals.SUnitAsyncTest);
@@ -442,6 +453,7 @@ args: [],
 source: "fakeMultipleTimeoutPassing\x0a\x09self timeout: 20.\x0a\x09(self async: [\x0a\x09\x09self timeout: 40.\x0a\x09\x09(self async: [ self finished ]) valueWithTimeout: 20\x0a\x09]) valueWithTimeout: 10",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished"]
 }),
 $globals.SUnitAsyncTest);
@@ -475,6 +487,7 @@ args: [],
 source: "fakeTimeout\x0a\x09self timeout: 10.\x0a\x09(self async: [ self finished ]) valueWithTimeout: 20",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished"]
 }),
 $globals.SUnitAsyncTest);
@@ -506,6 +519,7 @@ args: ["aCollection"],
 source: "selectorSetOf: aCollection\x0a\x09^ (aCollection collect: [ :each | each selector ]) asSet",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["asSet", "collect:", "selector"]
 }),
 $globals.SUnitAsyncTest);
@@ -525,6 +539,7 @@ args: [],
 source: "setUp\x0a\x09flag := 'ok'",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.SUnitAsyncTest);
@@ -549,6 +564,7 @@ args: [],
 source: "tearDown\x0a\x09self assert: 'ok' equals: flag",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["assert:equals:"]
 }),
 $globals.SUnitAsyncTest);
@@ -625,6 +641,7 @@ args: [],
 source: "testAsyncErrorsAndFailures\x0a\x09| suite runner result assertBlock |\x0a\x09suite := #('fakeError' 'fakeErrorFailingInTearDown' 'fakeFailure' 'testPass') collect: [ :each | self class selector: each ].\x0a\x09runner := TestSuiteRunner on: suite.\x0a\x09self timeout: 200.\x0a\x09result := runner result.\x0a\x09assertBlock := self async: [\x0a\x09\x09self assert: (self selectorSetOf: result errors) equals: #('fakeError') asSet.\x0a\x09\x09self assert: (self selectorSetOf: result failures) equals: #('fakeErrorFailingInTearDown' 'fakeFailure') asSet.\x0a\x09\x09self finished\x0a\x09].\x0a\x09runner announcer on: ResultAnnouncement do: [ :ann |\x0a\x09\x09ann result == result ifTrue: [ result runs = result total ifTrue: assertBlock ] ].\x0a\x09runner run",
 referencedClasses: ["TestSuiteRunner", "ResultAnnouncement"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["collect:", "selector:", "class", "on:", "timeout:", "result", "async:", "assert:equals:", "selectorSetOf:", "errors", "asSet", "failures", "finished", "on:do:", "announcer", "ifTrue:", "==", "=", "runs", "total", "run"]
 }),
 $globals.SUnitAsyncTest);
@@ -675,6 +692,7 @@ args: [],
 source: "testAsyncNeedsTimeout\x0a\x09self should: [ self async: [ ] ] raise: Error.\x0a\x09self timeout: 0.\x0a\x09self shouldnt: [ self async: [ ] ] raise: Error.\x0a\x09self finished",
 referencedClasses: ["Error"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["should:raise:", "async:", "timeout:", "shouldnt:raise:", "finished"]
 }),
 $globals.SUnitAsyncTest);
@@ -720,6 +738,7 @@ args: [],
 source: "testFinishedNeedsTimeout\x0a\x09self should: [ self finished ] raise: Error.\x0a\x09self timeout: 0.\x0a\x09self shouldnt: [ self finished ] raise: Error.",
 referencedClasses: ["Error"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["should:raise:", "finished", "timeout:", "shouldnt:raise:"]
 }),
 $globals.SUnitAsyncTest);
@@ -760,6 +779,7 @@ args: [],
 source: "testIsAsyncReturnsCorrectValues\x0a\x09self deny: self isAsync.\x0a\x09self timeout: 0.\x0a\x09self assert: self isAsync.\x0a\x09self finished.\x0a\x09self deny: self isAsync",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["deny:", "isAsync", "timeout:", "assert:", "finished"]
 }),
 $globals.SUnitAsyncTest);
@@ -797,6 +817,7 @@ args: [],
 source: "testPass\x0a\x09flag := 'bad'.\x0a\x09self timeout: 10.\x0a\x09flag := (self async: [ self assert: true. self finished. flag := 'ok' ]) valueWithTimeout: 5",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["timeout:", "valueWithTimeout:", "async:", "assert:", "finished"]
 }),
 $globals.SUnitAsyncTest);
@@ -869,6 +890,7 @@ args: [],
 source: "testTimeouts\x0a\x09| suite runner result assertBlock |\x0a\x09suite := #('fakeTimeout' 'fakeMultipleTimeoutFailing' 'fakeMultipleTimeoutPassing' 'testPass') collect: [ :each | self class selector: each ].\x0a\x09runner := TestSuiteRunner on: suite.\x0a\x09self timeout: 200.\x0a\x09result := runner result.\x0a\x09assertBlock := self async: [\x0a\x09\x09self assert: (self selectorSetOf: result errors) equals: Set new.\x0a\x09\x09self assert: (self selectorSetOf: result failures) equals: #('fakeMultipleTimeoutFailing' 'fakeTimeout') asSet.\x0a\x09\x09self finished\x0a\x09].\x0a\x09runner announcer on: ResultAnnouncement do: [ :ann |\x0a\x09\x09ann result == result ifTrue: [ result runs = result total ifTrue: assertBlock ] ].\x0a\x09runner run",
 referencedClasses: ["TestSuiteRunner", "Set", "ResultAnnouncement"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["collect:", "selector:", "class", "on:", "timeout:", "result", "async:", "assert:equals:", "selectorSetOf:", "errors", "new", "failures", "asSet", "finished", "on:do:", "announcer", "ifTrue:", "==", "=", "runs", "total", "run"]
 }),
 $globals.SUnitAsyncTest);
@@ -937,6 +959,7 @@ args: [],
 source: "testTwoAsyncPassesWithFinishedOnlyOneIsRun\x0a\x09| x |\x0a\x09flag := 'bad'.\x0a\x09self timeout: 10.\x0a\x09x := 0.\x0a\x09flag := (self async: [ self finished. flag := 'ok'. x := x+1. self assert: x equals: 1 ]) valueWithTimeout: 0.\x0a\x09flag := (self async: [ self finished. flag := 'ok'. x := x+1. self assert: x equals: 1 ]) valueWithTimeout: 0.",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished", "+", "assert:equals:"]
 }),
 $globals.SUnitAsyncTest);

+ 64 - 0
lang/src/SUnit.js

@@ -22,6 +22,7 @@ args: [],
 source: "result\x0a\x09^ result",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.ResultAnnouncement);
@@ -41,6 +42,7 @@ args: ["aTestResult"],
 source: "result: aTestResult\x0a\x09result := aTestResult",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.ResultAnnouncement);
@@ -71,6 +73,7 @@ args: ["aBoolean"],
 source: "assert: aBoolean\x0a\x09self assert: aBoolean description: 'Assertion failed'",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["assert:description:"]
 }),
 $globals.TestCase);
@@ -97,6 +100,7 @@ args: ["aBoolean", "aString"],
 source: "assert: aBoolean description: aString\x0a\x09aBoolean ifFalse: [ self signalFailure: aString ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifFalse:", "signalFailure:"]
 }),
 $globals.TestCase);
@@ -135,6 +139,7 @@ args: ["actual", "expected"],
 source: "assert: actual equals: expected\x0a\x09^ self assert: (actual = expected) description: 'Expected: ', expected printString, ' but was: ', actual printString",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["assert:description:", "=", ",", "printString"]
 }),
 $globals.TestCase);
@@ -173,6 +178,7 @@ args: ["aBlock"],
 source: "async: aBlock\x0a\x09| c |\x0a\x09self errorIfNotAsync: '#async'.\x0a\x09c := context.\x0a\x09^ [ self isAsync ifTrue: [ c execute: aBlock ] ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["errorIfNotAsync:", "ifTrue:", "isAsync", "execute:"]
 }),
 $globals.TestCase);
@@ -192,6 +198,7 @@ args: ["aRunningTestContext"],
 source: "context: aRunningTestContext\x0a\x09context := aRunningTestContext",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.TestCase);
@@ -216,6 +223,7 @@ args: ["aBoolean"],
 source: "deny: aBoolean\x0a\x09self assert: aBoolean not",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["assert:", "not"]
 }),
 $globals.TestCase);
@@ -244,6 +252,7 @@ args: ["aString"],
 source: "errorIfNotAsync: aString\x0a\x09self isAsync ifFalse: [\x0a\x09\x09self error: aString, ' used without prior #timeout:' ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifFalse:", "isAsync", "error:", ","]
 }),
 $globals.TestCase);
@@ -269,6 +278,7 @@ args: [],
 source: "finished\x0a\x09self errorIfNotAsync: '#finished'.\x0a\x09asyncTimeout := nil",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["errorIfNotAsync:"]
 }),
 $globals.TestCase);
@@ -292,6 +302,7 @@ args: [],
 source: "isAsync\x0a\x09^ asyncTimeout notNil",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["notNil"]
 }),
 $globals.TestCase);
@@ -317,6 +328,7 @@ args: [],
 source: "performTest\x0a\x09asyncTimeout := nil.\x0a\x09self perform: self selector",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["perform:", "selector"]
 }),
 $globals.TestCase);
@@ -341,6 +353,7 @@ args: [],
 source: "runCase\x0a\x09\x22Runs a test case in isolated context, leaking all errors.\x22\x0a\x0a\x09(TestContext testCase: self) start",
 referencedClasses: ["TestContext"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["start", "testCase:"]
 }),
 $globals.TestCase);
@@ -359,6 +372,7 @@ args: [],
 source: "selector\x0a\x09^ testSelector",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.TestCase);
@@ -378,6 +392,7 @@ args: ["aSelector"],
 source: "setTestSelector: aSelector\x0a\x09testSelector := aSelector",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.TestCase);
@@ -396,6 +411,7 @@ args: [],
 source: "setUp",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.TestCase);
@@ -420,6 +436,7 @@ args: ["aBlock"],
 source: "should: aBlock\x0a\x09self assert: aBlock value",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["assert:", "value"]
 }),
 $globals.TestCase);
@@ -456,6 +473,7 @@ args: ["aBlock", "anExceptionClass"],
 source: "should: aBlock raise: anExceptionClass\x0a\x09self assert: ([ aBlock value. false ]\x0a\x09\x09on: anExceptionClass\x0a\x09\x09do: [ :ex | true ])",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["assert:", "on:do:", "value"]
 }),
 $globals.TestCase);
@@ -492,6 +510,7 @@ args: ["aBlock", "anExceptionClass"],
 source: "shouldnt: aBlock raise: anExceptionClass\x0a\x09self assert: ([ aBlock value. true ]\x0a\x09\x09on: anExceptionClass\x0a\x09\x09do: [ :ex | false ])",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["assert:", "on:do:", "value"]
 }),
 $globals.TestCase);
@@ -519,6 +538,7 @@ args: ["aString"],
 source: "signalFailure: aString\x0a\x09TestFailure new\x0a\x09\x09messageText: aString;\x0a\x09\x09signal",
 referencedClasses: ["TestFailure"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["messageText:", "new", "signal"]
 }),
 $globals.TestCase);
@@ -537,6 +557,7 @@ args: [],
 source: "tearDown",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.TestCase);
@@ -577,6 +598,7 @@ args: ["aNumber"],
 source: "timeout: aNumber\x0a\x09\x22Set a grace time timeout in milliseconds to run the test asynchronously\x22\x0a\x09\x0a\x09asyncTimeout ifNotNil: [ asyncTimeout clearTimeout ].\x0a\x09\x0a\x09\x22to allow #async: message send without throwing an error\x22\x0a\x09asyncTimeout := 0.\x0a\x09\x0a\x09asyncTimeout := (self async: [\x0a\x09\x09self assert: false description: 'SUnit grace time exhausted' ])\x0a\x09\x09\x09valueWithTimeout: aNumber",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNotNil:", "clearTimeout", "valueWithTimeout:", "async:", "assert:description:"]
 }),
 $globals.TestCase);
@@ -608,6 +630,7 @@ args: [],
 source: "allTestSelectors\x0a\x09| selectors |\x0a\x09selectors := self testSelectors.\x0a\x09self shouldInheritSelectors ifTrue: [\x0a\x09\x09selectors addAll: self superclass allTestSelectors ].\x0a\x09^ selectors",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["testSelectors", "ifTrue:", "shouldInheritSelectors", "addAll:", "allTestSelectors", "superclass"]
 }),
 $globals.TestCase.a$cls);
@@ -639,6 +662,7 @@ args: [],
 source: "buildSuite\x0a\x09^ self allTestSelectors collect: [ :each | self selector: each ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["collect:", "allTestSelectors", "selector:"]
 }),
 $globals.TestCase.a$cls);
@@ -657,6 +681,7 @@ args: [],
 source: "classTag\x0a\x09\x22Returns a tag or general category for this class.\x0a\x09Typically used to help tools do some reflection.\x0a\x09Helios, for example, uses this to decide what icon the class should display.\x22\x0a\x09\x0a\x09^ 'test'",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.TestCase.a$cls);
@@ -680,6 +705,7 @@ args: [],
 source: "isAbstract\x0a\x09^ self name = 'TestCase'",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["=", "name"]
 }),
 $globals.TestCase.a$cls);
@@ -703,6 +729,7 @@ args: [],
 source: "isTestClass\x0a\x09^ self isAbstract not",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["not", "isAbstract"]
 }),
 $globals.TestCase.a$cls);
@@ -721,6 +748,7 @@ args: [],
 source: "lookupHierarchyRoot\x0a\x09^ TestCase",
 referencedClasses: ["TestCase"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.TestCase.a$cls);
@@ -747,6 +775,7 @@ args: ["aSelector"],
 source: "selector: aSelector\x0a\x09^ self new\x0a\x09\x09setTestSelector: aSelector;\x0a\x09\x09yourself",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["setTestSelector:", "new", "yourself"]
 }),
 $globals.TestCase.a$cls);
@@ -770,6 +799,7 @@ args: [],
 source: "shouldInheritSelectors\x0a\x09^ self ~= self lookupHierarchyRoot",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["~=", "lookupHierarchyRoot"]
 }),
 $globals.TestCase.a$cls);
@@ -801,6 +831,7 @@ args: [],
 source: "testSelectors\x0a\x09^ self methodDictionary keys select: [ :each | each match: '^test' ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["select:", "keys", "methodDictionary", "match:"]
 }),
 $globals.TestCase.a$cls);
@@ -874,6 +905,7 @@ args: ["aBlock"],
 source: "execute: aBlock\x0a\x09| failed |\x0a\x09\x0a\x09testCase context: self.\x0a\x09[\x0a\x09\x09failed := true.\x0a\x09\x09aBlock value.\x0a\x09\x09failed := false\x0a\x09]\x0a\x09\x09ensure: [\x0a\x09\x09\x09testCase context: nil.\x0a\x09\x09\x09\x0a\x09\x09\x09(failed and: [ testCase isAsync ]) ifTrue: [\x0a\x09\x09\x09\x09testCase finished ].\x0a\x09\x09\x09testCase isAsync ifFalse: [\x0a\x09\x09\x09\x09testCase tearDown ] ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["context:", "ensure:", "value", "ifTrue:", "and:", "isAsync", "finished", "ifFalse:", "tearDown"]
 }),
 $globals.TestContext);
@@ -907,6 +939,7 @@ args: [],
 source: "start\x0a\x09self execute: [\x0a\x09\x09testCase setUp.\x0a\x09\x09testCase performTest ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["execute:", "setUp", "performTest"]
 }),
 $globals.TestContext);
@@ -926,6 +959,7 @@ args: ["aTestCase"],
 source: "testCase: aTestCase\x0a\x09testCase := aTestCase",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.TestContext);
@@ -953,6 +987,7 @@ args: ["aTestCase"],
 source: "testCase: aTestCase\x0a\x09^ self new\x0a\x09\x09testCase: aTestCase;\x0a\x09\x09yourself",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["testCase:", "new", "yourself"]
 }),
 $globals.TestContext.a$cls);
@@ -1018,6 +1053,7 @@ args: ["aBlock"],
 source: "execute: aBlock\x0a\x09[\x0a\x09\x09self withErrorReporting: [ super execute: aBlock ]\x0a\x09]\x0a\x09\x09ensure: [\x0a\x09\x09\x09testCase isAsync ifFalse: [\x0a\x09\x09\x09\x09result increaseRuns. finished value ] ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ensure:", "withErrorReporting:", "execute:", "ifFalse:", "isAsync", "increaseRuns", "value"]
 }),
 $globals.ReportingTestContext);
@@ -1037,6 +1073,7 @@ args: ["aBlock"],
 source: "finished: aBlock\x0a\x09finished := aBlock",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.ReportingTestContext);
@@ -1056,6 +1093,7 @@ args: ["aTestResult"],
 source: "result: aTestResult\x0a\x09result := aTestResult",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.ReportingTestContext);
@@ -1107,6 +1145,7 @@ args: ["aBlock"],
 source: "withErrorReporting: aBlock\x0a\x09[ aBlock\x0a\x09\x09on: TestFailure\x0a\x09\x09do: [ :ex | result addFailure: testCase ]\x0a\x09]\x0a\x09\x09on: Error\x0a\x09\x09do: [ :ex | result addError: testCase ]",
 referencedClasses: ["TestFailure", "Error"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["on:do:", "addFailure:", "addError:"]
 }),
 $globals.ReportingTestContext);
@@ -1142,6 +1181,7 @@ args: ["aTestCase", "aTestResult", "aBlock"],
 source: "testCase: aTestCase result: aTestResult finished: aBlock\x0a\x09^ (super testCase: aTestCase)\x0a\x09\x09result: aTestResult;\x0a\x09\x09finished: aBlock;\x0a\x09\x09yourself",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["result:", "testCase:", "finished:", "yourself"]
 }),
 $globals.ReportingTestContext.a$cls);
@@ -1177,6 +1217,7 @@ args: ["anError"],
 source: "addError: anError\x0a\x09self errors add: anError",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["add:", "errors"]
 }),
 $globals.TestResult);
@@ -1201,6 +1242,7 @@ args: ["aFailure"],
 source: "addFailure: aFailure\x0a\x09self failures add: aFailure",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["add:", "failures"]
 }),
 $globals.TestResult);
@@ -1219,6 +1261,7 @@ args: [],
 source: "errors\x0a\x09^ errors",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.TestResult);
@@ -1237,6 +1280,7 @@ args: [],
 source: "failures\x0a\x09^ failures",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.TestResult);
@@ -1261,6 +1305,7 @@ args: [],
 source: "increaseRuns\x0a\x09runs := runs + 1",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["+"]
 }),
 $globals.TestResult);
@@ -1300,6 +1345,7 @@ args: [],
 source: "initialize\x0a\x09super initialize.\x0a\x09timestamp := Date now.\x0a\x09runs := 0.\x0a\x09errors := Array new.\x0a\x09failures := Array new.\x0a\x09total := 0",
 referencedClasses: ["Date", "Array"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["initialize", "now", "new"]
 }),
 $globals.TestResult);
@@ -1331,6 +1377,7 @@ args: ["aBlock"],
 source: "nextRunDo: aBlock\x0a\x09\x22Runs aBlock with index of next run or does nothing if no more runs\x22\x0a\x09^ self runs == self total\x0a\x09\x09ifFalse: [ aBlock value: self runs + 1 ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifFalse:", "==", "runs", "total", "value:", "+"]
 }),
 $globals.TestResult);
@@ -1391,6 +1438,7 @@ args: ["aTestCase"],
 source: "runCase: aTestCase\x0a\x09[ [ self increaseRuns.\x0a\x09\x09aTestCase runCase ]\x0a\x09on: TestFailure do: [ :ex | self addFailure: aTestCase ]]\x0a\x09on: Error do: [ :ex | self addError: aTestCase ]",
 referencedClasses: ["TestFailure", "Error"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["on:do:", "increaseRuns", "runCase", "addFailure:", "addError:"]
 }),
 $globals.TestResult);
@@ -1409,6 +1457,7 @@ args: [],
 source: "runs\x0a\x09^ runs",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.TestResult);
@@ -1454,6 +1503,7 @@ args: [],
 source: "status\x0a\x09^ self errors ifNotEmpty: [ 'error' ] ifEmpty: [\x0a\x09\x09self failures ifNotEmpty: [ 'failure' ] ifEmpty: [\x0a\x09\x09\x09'success' ]]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNotEmpty:ifEmpty:", "errors", "failures"]
 }),
 $globals.TestResult);
@@ -1472,6 +1522,7 @@ args: [],
 source: "timestamp\x0a\x09^ timestamp",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.TestResult);
@@ -1490,6 +1541,7 @@ args: [],
 source: "total\x0a\x09^ total",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.TestResult);
@@ -1509,6 +1561,7 @@ args: ["aNumber"],
 source: "total: aNumber\x0a\x09total := aNumber",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.TestResult);
@@ -1533,6 +1586,7 @@ args: [],
 source: "announcer\x0a\x09^ announcer",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.TestSuiteRunner);
@@ -1564,6 +1618,7 @@ args: ["anInteger"],
 source: "contextOf: anInteger\x0a\x09^ ReportingTestContext testCase: (suite at: anInteger) result: result finished: [ self resume ]",
 referencedClasses: ["ReportingTestContext"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["testCase:result:finished:", "at:", "resume"]
 }),
 $globals.TestSuiteRunner);
@@ -1615,6 +1670,7 @@ args: [],
 source: "initialize\x0a\x09super initialize.\x0a\x09announcer := Announcer new.\x0a\x09result := TestResult new.\x0a\x09runNextTest := [ | runs | runs := result runs. runs < result total ifTrue: [ (self contextOf: runs + 1) start ] ].",
 referencedClasses: ["Announcer", "TestResult"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["initialize", "new", "runs", "ifTrue:", "<", "total", "start", "contextOf:", "+"]
 }),
 $globals.TestSuiteRunner);
@@ -1633,6 +1689,7 @@ args: [],
 source: "result\x0a\x09^ result",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.TestSuiteRunner);
@@ -1658,6 +1715,7 @@ args: [],
 source: "resume\x0a\x09runNextTest fork.\x0a\x09announcer announce: (ResultAnnouncement new result: result)",
 referencedClasses: ["ResultAnnouncement"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["fork", "announce:", "result:", "new"]
 }),
 $globals.TestSuiteRunner);
@@ -1683,6 +1741,7 @@ args: [],
 source: "run\x0a\x09result total: suite size.\x0a\x09self resume",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["total:", "size", "resume"]
 }),
 $globals.TestSuiteRunner);
@@ -1702,6 +1761,7 @@ args: ["aCollection"],
 source: "suite: aCollection\x0a\x09suite := aCollection",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.TestSuiteRunner);
@@ -1727,6 +1787,7 @@ args: [],
 source: "new\x0a\x09self shouldNotImplement",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["shouldNotImplement"]
 }),
 $globals.TestSuiteRunner.a$cls);
@@ -1759,6 +1820,7 @@ args: ["aCollection"],
 source: "on: aCollection\x0a\x09^ super new suite: aCollection",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["suite:", "new"]
 }),
 $globals.TestSuiteRunner.a$cls);
@@ -1790,6 +1852,7 @@ args: [],
 source: "isTestPackage\x0a\x09^ self classes anySatisfy: [ :each | each isTestClass ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["anySatisfy:", "classes", "isTestClass"]
 }),
 $globals.Package);
@@ -1808,6 +1871,7 @@ args: [],
 source: "isTestClass\x0a\x09^ false",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.TBehaviorDefaults);

Some files were not shown because too many files changed in this diff