Browse Source

Merge branch 'master' into 0.13-prereleases

Herbert Vojčík 9 years ago
parent
commit
7e05407621

+ 4 - 23
Gruntfile.js

@@ -10,7 +10,7 @@ module.exports = function(grunt) {
   grunt.loadNpmTasks('grunt-execute');
   grunt.loadNpmTasks('grunt-execute');
 
 
   grunt.registerTask('default', ['peg', 'amberc:all']);
   grunt.registerTask('default', ['peg', 'amberc:all']);
-  grunt.registerTask('amberc:all', ['amberc:core', 'amberc:cli']);
+  grunt.registerTask('amberc:all', ['amberc:amber', 'amberc:cli']);
   grunt.registerTask('test', ['amberc:test_runner', 'execute:test_runner', 'clean:test_runner']);
   grunt.registerTask('test', ['amberc:test_runner', 'execute:test_runner', 'clean:test_runner']);
 
 
   grunt.initConfig({
   grunt.initConfig({
@@ -21,13 +21,13 @@ module.exports = function(grunt) {
     },
     },
 
 
     peg: {
     peg: {
-      amber_parser: {
+      parser: {
         options: {
         options: {
           cache: true,
           cache: true,
           export_var: 'globals.SmalltalkParser'
           export_var: 'globals.SmalltalkParser'
         },
         },
         src: 'support/parser.pegjs',
         src: 'support/parser.pegjs',
-        dest: 'support/parser.js',
+        dest: 'support/parser.js'
       }
       }
     },
     },
 
 
@@ -36,7 +36,7 @@ module.exports = function(grunt) {
         amber_dir: process.cwd(),
         amber_dir: process.cwd(),
         closure_jar: ''
         closure_jar: ''
       },
       },
-      core: {
+      amber: {
         output_dir : 'src',
         output_dir : 'src',
         src: ['src/Kernel-Objects.st', 'src/Kernel-Classes.st', 'src/Kernel-Methods.st', 'src/Kernel-Collections.st',
         src: ['src/Kernel-Objects.st', 'src/Kernel-Classes.st', 'src/Kernel-Methods.st', 'src/Kernel-Collections.st',
               'src/Kernel-Infrastructure.st', 'src/Kernel-Exceptions.st', 'src/Kernel-Transcript.st', 'src/Kernel-Announcements.st',
               'src/Kernel-Infrastructure.st', 'src/Kernel-Exceptions.st', 'src/Kernel-Transcript.st', 'src/Kernel-Announcements.st',
@@ -48,25 +48,6 @@ module.exports = function(grunt) {
               ],
               ],
         jsGlobals: ['navigator']
         jsGlobals: ['navigator']
       },
       },
-      amber_kernel: {
-        output_dir : 'src',
-        src: ['src/Kernel-Objects.st', 'src/Kernel-Classes.st', 'src/Kernel-Methods.st', 'src/Kernel-Collections.st',
-              'src/Kernel-Infrastructure.st', 'src/Kernel-Exceptions.st', 'src/Kernel-Transcript.st', 'src/Kernel-Announcements.st']
-      },
-      amber_web: {
-        output_dir : 'src',
-        src: ['src/Web.st', 'src/SUnit.st']
-      },
-      amber_IDE: {
-        output_dir : 'src',
-        src: ['src/IDE.st'],
-        libraries: ['Web']
-      },
-      amber_tests: {
-        output_dir : 'src',
-        src: ['src/Kernel-Tests.st', 'src/Compiler-Tests.st', 'src/SUnit-Tests.st'],
-        libraries: ['SUnit']
-      },
       cli: {
       cli: {
         output_dir: 'external/amber-cli/src',
         output_dir: 'external/amber-cli/src',
         src: ['external/amber-cli/src/AmberCli.st'],
         src: ['external/amber-cli/src/AmberCli.st'],

+ 1 - 1
README.md

@@ -1,4 +1,4 @@
-Amber [![Travis CI Status](https://secure.travis-ci.org/amber-smalltalk/amber.png)](https://travis-ci.org/#!/amber-smalltalk/amber)
+Amber [![Travis CI Status](https://secure.travis-ci.org/amber-smalltalk/amber.png)](https://travis-ci.org/#!/amber-smalltalk/amber) [![devDependency status](https://david-dm.org/amber-smalltalk/amber/dev-status.svg?style=flat)](https://david-dm.org/amber-smalltalk/amber#info=devDependencies)
 =====
 =====
 
 
 By Nicolas Petton <petton.nicolas@gmail.com> and [Amber contributors](https://github.com/amber-smalltalk/amber/contributors)
 By Nicolas Petton <petton.nicolas@gmail.com> and [Amber contributors](https://github.com/amber-smalltalk/amber/contributors)

+ 25 - 31
config.js

@@ -4,69 +4,63 @@ var require;
 if (!require) require = {config: function (x) {require = x;}};
 if (!require) require = {config: function (x) {require = x;}};
 require.config({
 require.config({
   "paths": {
   "paths": {
-    "amber_lib/showdown": "my/helios/bower_components/showdown",
-    "jquery": [
-      "bower_components/jquery/dist/jquery.min",
-      "bower_components/jquery/jquery.min",
-      "bower_components/jquery/dist/jquery.min",
-      "bower_components/jquery/jquery.min"
-    ],
-    "jquery-ui": [
-      "bower_components/jquery-ui/jquery-ui.min",
-      "bower_components/jquery-ui/ui/minified/jquery-ui.min",
-      "bower_components/jquery-ui/jquery-ui.min",
-      "bower_components/jquery-ui/ui/minified/jquery-ui.min"
-    ],
-    "bootstrap2.3.2": "my/helios/bower_components/bootstrap2.3.2/bootstrap",
     "require-css": "bower_components/require-css",
     "require-css": "bower_components/require-css",
+    "jquery": "bower_components/jquery/jquery.min",
+    "jquery-ui": "bower_components/jquery-ui/jquery-ui.min",
     "amber_lib/es5-shim": "bower_components/es5-shim",
     "amber_lib/es5-shim": "bower_components/es5-shim",
     "amber_lib/codemirror": "bower_components/codemirror",
     "amber_lib/codemirror": "bower_components/codemirror",
-    "helios": "my/helios/src",
-    "helios/set": "my/helios/set",
-    "helios/resources": "my/helios/resources",
-    "helios/index": "my/helios/index",
-    "amber_cli": "external/amber-cli/src",
+    "amber_lib/showdown": "my/helios/bower_components/showdown",
+    "bootstrap2.3.2": "my/helios/bower_components/bootstrap2.3.2/bootstrap",
     "amber": "support",
     "amber": "support",
     "amber_vm": "support/deprecated-vm-files",
     "amber_vm": "support/deprecated-vm-files",
     "amber_vm/_st": "support/deprecated-vm-files/as-receiver",
     "amber_vm/_st": "support/deprecated-vm-files/as-receiver",
     "amber_css": "support/resources",
     "amber_css": "support/resources",
-    "amber_core": "src"
+    "amber_core": "src",
+    "helios": "my/helios/src",
+    "helios/set": "my/helios/set",
+    "helios/resources": "my/helios/resources",
+    "helios/index": "my/helios/index",
+    "amber_cli": "external/amber-cli/src"
+  },
+  "map": {
+    "*": {
+      "css": "require-css/css"
+    }
   },
   },
   "shim": {
   "shim": {
     "jquery-ui": {
     "jquery-ui": {
       "deps": [
       "deps": [
         "jquery",
         "jquery",
-        "jquery"
-      ]
-    },
-    "bootstrap2.3.2/js/bootstrap": {
-      "deps": [
         "jquery",
         "jquery",
-        "css!bootstrap2.3.2/css/bootstrap"
+        "jquery"
       ]
       ]
     },
     },
     "amber_lib/codemirror/lib/codemirror": {
     "amber_lib/codemirror/lib/codemirror": {
       "deps": [
       "deps": [
+        "css!amber_lib/codemirror/lib/codemirror",
         "css!amber_lib/codemirror/lib/codemirror"
         "css!amber_lib/codemirror/lib/codemirror"
       ]
       ]
     },
     },
     "amber_lib/codemirror/mode/smalltalk/smalltalk": {
     "amber_lib/codemirror/mode/smalltalk/smalltalk": {
       "deps": [
       "deps": [
+        "../../lib/codemirror",
         "../../lib/codemirror"
         "../../lib/codemirror"
       ]
       ]
     },
     },
     "amber_lib/codemirror/addon/hint/show-hint": {
     "amber_lib/codemirror/addon/hint/show-hint": {
       "deps": [
       "deps": [
+        "../../lib/codemirror",
         "../../lib/codemirror"
         "../../lib/codemirror"
       ]
       ]
     },
     },
+    "bootstrap2.3.2/js/bootstrap": {
+      "deps": [
+        "jquery",
+        "css!bootstrap2.3.2/css/bootstrap"
+      ]
+    },
     "ensure-console": {
     "ensure-console": {
       "exports": "console"
       "exports": "console"
     }
     }
-  },
-  "map": {
-    "*": {
-      "css": "require-css/css"
-    }
   }
   }
 });
 });

File diff suppressed because it is too large
+ 436 - 99
external/amber-cli/src/AmberCli.js


File diff suppressed because it is too large
+ 411 - 109
external/amber-cli/support/amber-cli.js


+ 6 - 6
package.json

@@ -29,11 +29,11 @@
     "test": "grunt test"
     "test": "grunt test"
   },
   },
   "devDependencies": {
   "devDependencies": {
-    "pegjs": "~0.8.0",
-    "grunt": "~0.4.0",
-    "grunt-contrib-jshint": "~0.3.0",
-    "grunt-execute": "~0.2.1",
-    "amber-dev": "~0.1.6",
-    "grunt-contrib-clean": "~0.5.0"
+    "pegjs": "^0.8.0",
+    "grunt": "^0.4.0",
+    "grunt-contrib-jshint": "^0.10.0",
+    "grunt-execute": "^0.2.1",
+    "amber-dev": "^0.2.0",
+    "grunt-contrib-clean": "^0.6.0"
   }
   }
 }
 }

+ 229 - 38
src/Benchfib.js

@@ -12,14 +12,22 @@ protocol: 'not yet classified',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var result;
 var result;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 result=(0)._tinyBenchmarks();
 result=(0)._tinyBenchmarks();
 _st(console)._log_("0 tinyBenchmarks => ".__comma(result));
 _st(console)._log_("0 tinyBenchmarks => ".__comma(result));
-return self}, function($ctx1) {$ctx1.fill(self,"main",{result:result},globals.Benchfib.klass)})},
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"main",{result:result},globals.Benchfib.klass)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "main\x0a\x0a\x09| result |\x0a\x09result := 0 tinyBenchmarks.\x0a\x09console log: '0 tinyBenchmarks => ' , result",
 source: "main\x0a\x0a\x09| result |\x0a\x09result := 0 tinyBenchmarks.\x0a\x09console log: '0 tinyBenchmarks => ' , result",
-messageSends: ["tinyBenchmarks", "log:", ","],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["tinyBenchmarks", "log:", ","]
 }),
 }),
 globals.Benchfib.klass);
 globals.Benchfib.klass);
 
 
@@ -29,26 +37,39 @@ selector: "benchFib",
 protocol: '*Benchfib',
 protocol: '*Benchfib',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 var $2,$5,$4,$3,$1;
 var $2,$5,$4,$3,$1;
 $2=self.__lt((2));
 $2=self.__lt((2));
 if(smalltalk.assert($2)){
 if(smalltalk.assert($2)){
 $1=(1);
 $1=(1);
 } else {
 } else {
 $5=self.__minus((1));
 $5=self.__minus((1));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["-"]=1;
 $ctx1.sendIdx["-"]=1;
+//>>excludeEnd("ctx");
 $4=_st($5)._benchFib();
 $4=_st($5)._benchFib();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["benchFib"]=1;
 $ctx1.sendIdx["benchFib"]=1;
+//>>excludeEnd("ctx");
 $3=_st($4).__plus(_st(self.__minus((2)))._benchFib());
 $3=_st($4).__plus(_st(self.__minus((2)))._benchFib());
 $1=_st($3).__plus((1));
 $1=_st($3).__plus((1));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["+"]=1;
 $ctx1.sendIdx["+"]=1;
+//>>excludeEnd("ctx");
 };
 };
 return $1;
 return $1;
-}, function($ctx1) {$ctx1.fill(self,"benchFib",{},globals.Number)})},
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"benchFib",{},globals.Number)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "benchFib\x0a\x09\x22Handy send-heavy benchmark\x22\x0a\x09\x22(result // seconds to run) = approx calls per second\x22\x0a\x09\x22\x09| r t |\x0a\x09\x09t := Time millisecondsToRun: [r := 26 benchFib].\x0a\x09\x09(r * 1000) // t\x22\x0a\x09\x22138000 on a Mac 8100/100\x22\x0a\x09^ self < 2\x0a\x09\x09ifTrue: [1]\x0a\x09\x09ifFalse: [(self-1) benchFib + (self-2) benchFib + 1]",
 source: "benchFib\x0a\x09\x22Handy send-heavy benchmark\x22\x0a\x09\x22(result // seconds to run) = approx calls per second\x22\x0a\x09\x22\x09| r t |\x0a\x09\x09t := Time millisecondsToRun: [r := 26 benchFib].\x0a\x09\x09(r * 1000) // t\x22\x0a\x09\x22138000 on a Mac 8100/100\x22\x0a\x09^ self < 2\x0a\x09\x09ifTrue: [1]\x0a\x09\x09ifFalse: [(self-1) benchFib + (self-2) benchFib + 1]",
-messageSends: ["ifTrue:ifFalse:", "<", "+", "benchFib", "-"],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["ifTrue:ifFalse:", "<", "+", "benchFib", "-"]
 }),
 }),
 globals.Number);
 globals.Number);
 
 
@@ -60,52 +81,92 @@ fn: function (){
 var self=this;
 var self=this;
 var size,flags,prime,k,count;
 var size,flags,prime,k,count;
 function $Array(){return globals.Array||(typeof Array=="undefined"?nil:Array)}
 function $Array(){return globals.Array||(typeof Array=="undefined"?nil:Array)}
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 var $1,$2;
 var $1,$2;
 size=(8190);
 size=(8190);
 (1)._to_do_(self,(function(iter){
 (1)._to_do_(self,(function(iter){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx2) {
 return smalltalk.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
 count=(0);
 count=(0);
 count;
 count;
 flags=_st($Array())._new();
 flags=_st($Array())._new();
 flags;
 flags;
 _st(size)._timesRepeat_((function(){
 _st(size)._timesRepeat_((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx3) {
 return smalltalk.withContext(function($ctx3) {
+//>>excludeEnd("ctx");
 return _st(flags)._add_(true);
 return _st(flags)._add_(true);
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
+//>>excludeEnd("ctx");
+}));
 return (1)._to_do_(size,(function(i){
 return (1)._to_do_(size,(function(i){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx3) {
 return smalltalk.withContext(function($ctx3) {
+//>>excludeEnd("ctx");
 $1=_st(flags)._at_(i);
 $1=_st(flags)._at_(i);
 if(smalltalk.assert($1)){
 if(smalltalk.assert($1)){
 prime=_st(i).__plus((1));
 prime=_st(i).__plus((1));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx3.sendIdx["+"]=1;
 $ctx3.sendIdx["+"]=1;
+//>>excludeEnd("ctx");
 prime;
 prime;
 k=_st(i).__plus(prime);
 k=_st(i).__plus(prime);
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx3.sendIdx["+"]=2;
 $ctx3.sendIdx["+"]=2;
+//>>excludeEnd("ctx");
 k;
 k;
 _st((function(){
 _st((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx4) {
 return smalltalk.withContext(function($ctx4) {
+//>>excludeEnd("ctx");
 return _st(k).__lt_eq(size);
 return _st(k).__lt_eq(size);
-}, function($ctx4) {$ctx4.fillBlock({},$ctx3,5)})}))._whileTrue_((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx4) {$ctx4.fillBlock({},$ctx3,5)});
+//>>excludeEnd("ctx");
+}))._whileTrue_((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx4) {
 return smalltalk.withContext(function($ctx4) {
+//>>excludeEnd("ctx");
 _st(flags)._at_put_(k,false);
 _st(flags)._at_put_(k,false);
 k=_st(k).__plus(prime);
 k=_st(k).__plus(prime);
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx4.sendIdx["+"]=3;
 $ctx4.sendIdx["+"]=3;
+//>>excludeEnd("ctx");
 return k;
 return k;
-}, function($ctx4) {$ctx4.fillBlock({},$ctx3,6)})}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx4) {$ctx4.fillBlock({},$ctx3,6)});
+//>>excludeEnd("ctx");
+}));
 count=_st(count).__plus((1));
 count=_st(count).__plus((1));
 return count;
 return count;
 };
 };
-}, function($ctx3) {$ctx3.fillBlock({i:i},$ctx2,3)})}));
-}, function($ctx2) {$ctx2.fillBlock({iter:iter},$ctx1,1)})}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx3) {$ctx3.fillBlock({i:i},$ctx2,3)});
+//>>excludeEnd("ctx");
+}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({iter:iter},$ctx1,1)});
+//>>excludeEnd("ctx");
+}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["to:do:"]=1;
 $ctx1.sendIdx["to:do:"]=1;
+//>>excludeEnd("ctx");
 $2=count;
 $2=count;
 return $2;
 return $2;
-}, function($ctx1) {$ctx1.fill(self,"benchmark",{size:size,flags:flags,prime:prime,k:k,count:count},globals.Number)})},
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"benchmark",{size:size,flags:flags,prime:prime,k:k,count:count},globals.Number)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "benchmark\x0a\x09\x22Handy bytecode-heavy benchmark\x22\x0a\x09\x22(500000 // time to run) = approx bytecodes per second\x22\x0a\x09\x225000000 // (Time millisecondsToRun: [10 benchmark]) * 1000\x22\x0a\x09\x223059000 on a Mac 8100/100\x22\x0a\x09| size flags prime k count |\x0a\x09size := 8190.\x0a\x091 to: self do:\x0a\x09\x09[:iter |\x0a\x09\x09count := 0.\x0a\x09\x09flags := Array new.\x0a\x09\x09size timesRepeat: [ flags add: true].\x0a\x09\x091 to: size do:\x0a\x09\x09\x09[:i | (flags at: i) ifTrue:\x0a\x09\x09\x09\x09[prime := i+1.\x0a\x09\x09\x09\x09k := i + prime.\x0a\x09\x09\x09\x09[k <= size] whileTrue:\x0a\x09\x09\x09\x09\x09[flags at: k put: false.\x0a\x09\x09\x09\x09\x09k := k + prime].\x0a\x09\x09\x09\x09count := count + 1]]].\x0a\x09^ count",
 source: "benchmark\x0a\x09\x22Handy bytecode-heavy benchmark\x22\x0a\x09\x22(500000 // time to run) = approx bytecodes per second\x22\x0a\x09\x225000000 // (Time millisecondsToRun: [10 benchmark]) * 1000\x22\x0a\x09\x223059000 on a Mac 8100/100\x22\x0a\x09| size flags prime k count |\x0a\x09size := 8190.\x0a\x091 to: self do:\x0a\x09\x09[:iter |\x0a\x09\x09count := 0.\x0a\x09\x09flags := Array new.\x0a\x09\x09size timesRepeat: [ flags add: true].\x0a\x09\x091 to: size do:\x0a\x09\x09\x09[:i | (flags at: i) ifTrue:\x0a\x09\x09\x09\x09[prime := i+1.\x0a\x09\x09\x09\x09k := i + prime.\x0a\x09\x09\x09\x09[k <= size] whileTrue:\x0a\x09\x09\x09\x09\x09[flags at: k put: false.\x0a\x09\x09\x09\x09\x09k := k + prime].\x0a\x09\x09\x09\x09count := count + 1]]].\x0a\x09^ count",
-messageSends: ["to:do:", "new", "timesRepeat:", "add:", "ifTrue:", "at:", "+", "whileTrue:", "<=", "at:put:"],
-referencedClasses: ["Array"]
+referencedClasses: ["Array"],
+//>>excludeEnd("ide");
+messageSends: ["to:do:", "new", "timesRepeat:", "add:", "ifTrue:", "at:", "+", "whileTrue:", "<=", "at:put:"]
 }),
 }),
 globals.Number);
 globals.Number);
 
 
@@ -115,16 +176,24 @@ selector: "jsbenchFib",
 protocol: '*Benchfib',
 protocol: '*Benchfib',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 if (this < 2) {
 if (this < 2) {
 return 1;
 return 1;
 } else {
 } else {
 return (this-1)._jsbenchFib() + (this-2)._jsbenchFib() + 1;};
 return (this-1)._jsbenchFib() + (this-2)._jsbenchFib() + 1;};
-return self}, function($ctx1) {$ctx1.fill(self,"jsbenchFib",{},globals.Number)})},
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"jsbenchFib",{},globals.Number)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "jsbenchFib\x0a\x0a\x09<if (this < 2) {\x0areturn 1;\x0a} else {\x0areturn (this-1)._jsbenchFib() + (this-2)._jsbenchFib() + 1;}>",
 source: "jsbenchFib\x0a\x0a\x09<if (this < 2) {\x0areturn 1;\x0a} else {\x0areturn (this-1)._jsbenchFib() + (this-2)._jsbenchFib() + 1;}>",
-messageSends: [],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: []
 }),
 }),
 globals.Number);
 globals.Number);
 
 
@@ -134,7 +203,9 @@ selector: "jsbenchmark",
 protocol: '*Benchfib',
 protocol: '*Benchfib',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 
 
 var size = 8190;
 var size = 8190;
 var count;
 var count;
@@ -157,11 +228,17 @@ for (var z=0;z<this;z++) {
 	}
 	}
 }
 }
 return count;
 return count;
-return self}, function($ctx1) {$ctx1.fill(self,"jsbenchmark",{},globals.Number)})},
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"jsbenchmark",{},globals.Number)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "jsbenchmark\x0a\x0a<\x0avar size = 8190;\x0avar count;\x0afor (var z=0;z<this;z++) {\x0a\x09count = 0;\x0a\x09var flags = new Array();\x0a\x09for (var p=0; p<size; p++) {\x0a\x09flags[p] = true;\x0a\x09}\x0a\x09for (var i=1;i<=size;i++) {\x0a\x09\x09if (flags[i-1]) {\x0a\x09\x09\x09var prime = i+1;\x0a\x09\x09\x09var k = i + prime;\x0a\x09\x09\x09while (k <= size) {\x0a\x09\x09\x09\x09flags[k-1] = false;\x0a\x09\x09\x09\x09k = k + prime;\x0a\x09\x09\x09}\x0a\x09\x09\x09count = count + 1;\x0a\x09\x09}\x0a\x09}\x0a}\x0areturn count>",
 source: "jsbenchmark\x0a\x0a<\x0avar size = 8190;\x0avar count;\x0afor (var z=0;z<this;z++) {\x0a\x09count = 0;\x0a\x09var flags = new Array();\x0a\x09for (var p=0; p<size; p++) {\x0a\x09flags[p] = true;\x0a\x09}\x0a\x09for (var i=1;i<=size;i++) {\x0a\x09\x09if (flags[i-1]) {\x0a\x09\x09\x09var prime = i+1;\x0a\x09\x09\x09var k = i + prime;\x0a\x09\x09\x09while (k <= size) {\x0a\x09\x09\x09\x09flags[k-1] = false;\x0a\x09\x09\x09\x09k = k + prime;\x0a\x09\x09\x09}\x0a\x09\x09\x09count = count + 1;\x0a\x09\x09}\x0a\x09}\x0a}\x0areturn count>",
-messageSends: [],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: []
 }),
 }),
 globals.Number);
 globals.Number);
 
 
@@ -173,60 +250,117 @@ fn: function (){
 var self=this;
 var self=this;
 var t1,t2,r,n1,n2;
 var t1,t2,r,n1,n2;
 function $Date(){return globals.Date||(typeof Date=="undefined"?nil:Date)}
 function $Date(){return globals.Date||(typeof Date=="undefined"?nil:Date)}
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 var $7,$6,$5,$4,$3,$2,$1;
 var $7,$6,$5,$4,$3,$2,$1;
 n1=(1);
 n1=(1);
 _st((function(){
 _st((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx2) {
 return smalltalk.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
 t1=_st($Date())._millisecondsToRun_((function(){
 t1=_st($Date())._millisecondsToRun_((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx3) {
 return smalltalk.withContext(function($ctx3) {
+//>>excludeEnd("ctx");
 return _st(n1)._jsbenchmark();
 return _st(n1)._jsbenchmark();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
+//>>excludeEnd("ctx");
+}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["millisecondsToRun:"]=1;
 $ctx2.sendIdx["millisecondsToRun:"]=1;
+//>>excludeEnd("ctx");
 t1;
 t1;
 return _st(t1).__lt((1000));
 return _st(t1).__lt((1000));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["<"]=1;
 $ctx2.sendIdx["<"]=1;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._whileTrue_((function(){
+//>>excludeEnd("ctx");
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
+//>>excludeEnd("ctx");
+}))._whileTrue_((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx2) {
 return smalltalk.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
 n1=_st(n1).__star((2));
 n1=_st(n1).__star((2));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["*"]=1;
 $ctx2.sendIdx["*"]=1;
+//>>excludeEnd("ctx");
 return n1;
 return n1;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
+//>>excludeEnd("ctx");
+}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["whileTrue:"]=1;
 $ctx1.sendIdx["whileTrue:"]=1;
+//>>excludeEnd("ctx");
 n2=(28);
 n2=(28);
 _st((function(){
 _st((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx2) {
 return smalltalk.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
 t2=_st($Date())._millisecondsToRun_((function(){
 t2=_st($Date())._millisecondsToRun_((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx3) {
 return smalltalk.withContext(function($ctx3) {
+//>>excludeEnd("ctx");
 r=_st(n2)._jsbenchFib();
 r=_st(n2)._jsbenchFib();
 return r;
 return r;
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,5)})}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2,5)});
+//>>excludeEnd("ctx");
+}));
 t2;
 t2;
 return _st(t2).__lt((1000));
 return _st(t2).__lt((1000));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)})}))._whileTrue_((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)});
+//>>excludeEnd("ctx");
+}))._whileTrue_((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx2) {
 return smalltalk.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
 n2=_st(n2).__plus((1));
 n2=_st(n2).__plus((1));
 return n2;
 return n2;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,6)})}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,6)});
+//>>excludeEnd("ctx");
+}));
 $7=_st(n1).__star((500000));
 $7=_st(n1).__star((500000));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["*"]=3;
 $ctx1.sendIdx["*"]=3;
+//>>excludeEnd("ctx");
 $6=_st($7).__star((1000));
 $6=_st($7).__star((1000));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["*"]=2;
 $ctx1.sendIdx["*"]=2;
+//>>excludeEnd("ctx");
 $5=_st($6).__slash(t1);
 $5=_st($6).__slash(t1);
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["/"]=1;
 $ctx1.sendIdx["/"]=1;
+//>>excludeEnd("ctx");
 $4=_st($5)._printString();
 $4=_st($5)._printString();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["printString"]=1;
 $ctx1.sendIdx["printString"]=1;
+//>>excludeEnd("ctx");
 $3=_st($4).__comma(" bytecodes/sec; ");
 $3=_st($4).__comma(" bytecodes/sec; ");
 $2=_st($3).__comma(_st(_st(_st(r).__star((1000))).__slash(t2))._printString());
 $2=_st($3).__comma(_st(_st(_st(r).__star((1000))).__slash(t2))._printString());
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx[","]=2;
 $ctx1.sendIdx[","]=2;
+//>>excludeEnd("ctx");
 $1=_st($2).__comma(" sends/sec");
 $1=_st($2).__comma(" sends/sec");
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx[","]=1;
 $ctx1.sendIdx[","]=1;
+//>>excludeEnd("ctx");
 return $1;
 return $1;
-}, function($ctx1) {$ctx1.fill(self,"jstinyBenchmarks",{t1:t1,t2:t2,r:r,n1:n1,n2:n2},globals.Number)})},
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"jstinyBenchmarks",{t1:t1,t2:t2,r:r,n1:n1,n2:n2},globals.Number)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "jstinyBenchmarks\x0a\x09\x220 jstinyBenchmarks\x22\x0a\x0a\x09| t1 t2 r n1 n2 |\x0a\x09n1 := 1.\x0a\x09[t1 := Date millisecondsToRun: [n1 jsbenchmark].\x0a\x09t1 < 1000] whileTrue:[n1 := n1 * 2]. \x22Note: #benchmark's runtime is about O(n)\x22\x0a\x0a\x09n2 := 28.\x0a\x09[t2 := Date millisecondsToRun: [r := n2 jsbenchFib].\x0a\x09t2 < 1000] whileTrue:[n2 := n2 + 1].\x0a\x09\x22Note: #jsbenchFib's runtime is about O(k^n),\x0a\x09\x09where k is the golden number = (1 + 5 sqrt) / 2 = 1.618....\x22\x0a\x0a\x09^ ((n1 * 500000 * 1000) / t1) printString, ' bytecodes/sec; ',\x0a\x09\x09((r * 1000) / t2) printString, ' sends/sec'",
 source: "jstinyBenchmarks\x0a\x09\x220 jstinyBenchmarks\x22\x0a\x0a\x09| t1 t2 r n1 n2 |\x0a\x09n1 := 1.\x0a\x09[t1 := Date millisecondsToRun: [n1 jsbenchmark].\x0a\x09t1 < 1000] whileTrue:[n1 := n1 * 2]. \x22Note: #benchmark's runtime is about O(n)\x22\x0a\x0a\x09n2 := 28.\x0a\x09[t2 := Date millisecondsToRun: [r := n2 jsbenchFib].\x0a\x09t2 < 1000] whileTrue:[n2 := n2 + 1].\x0a\x09\x22Note: #jsbenchFib's runtime is about O(k^n),\x0a\x09\x09where k is the golden number = (1 + 5 sqrt) / 2 = 1.618....\x22\x0a\x0a\x09^ ((n1 * 500000 * 1000) / t1) printString, ' bytecodes/sec; ',\x0a\x09\x09((r * 1000) / t2) printString, ' sends/sec'",
-messageSends: ["whileTrue:", "millisecondsToRun:", "jsbenchmark", "<", "*", "jsbenchFib", "+", ",", "printString", "/"],
-referencedClasses: ["Date"]
+referencedClasses: ["Date"],
+//>>excludeEnd("ide");
+messageSends: ["whileTrue:", "millisecondsToRun:", "jsbenchmark", "<", "*", "jsbenchFib", "+", ",", "printString", "/"]
 }),
 }),
 globals.Number);
 globals.Number);
 
 
@@ -238,60 +372,117 @@ fn: function (){
 var self=this;
 var self=this;
 var t1,t2,r,n1,n2;
 var t1,t2,r,n1,n2;
 function $Date(){return globals.Date||(typeof Date=="undefined"?nil:Date)}
 function $Date(){return globals.Date||(typeof Date=="undefined"?nil:Date)}
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 var $7,$6,$5,$4,$3,$2,$1;
 var $7,$6,$5,$4,$3,$2,$1;
 n1=(1);
 n1=(1);
 _st((function(){
 _st((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx2) {
 return smalltalk.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
 t1=_st($Date())._millisecondsToRun_((function(){
 t1=_st($Date())._millisecondsToRun_((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx3) {
 return smalltalk.withContext(function($ctx3) {
+//>>excludeEnd("ctx");
 return _st(n1)._benchmark();
 return _st(n1)._benchmark();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
+//>>excludeEnd("ctx");
+}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["millisecondsToRun:"]=1;
 $ctx2.sendIdx["millisecondsToRun:"]=1;
+//>>excludeEnd("ctx");
 t1;
 t1;
 return _st(t1).__lt((1000));
 return _st(t1).__lt((1000));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["<"]=1;
 $ctx2.sendIdx["<"]=1;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._whileTrue_((function(){
+//>>excludeEnd("ctx");
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
+//>>excludeEnd("ctx");
+}))._whileTrue_((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx2) {
 return smalltalk.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
 n1=_st(n1).__star((2));
 n1=_st(n1).__star((2));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["*"]=1;
 $ctx2.sendIdx["*"]=1;
+//>>excludeEnd("ctx");
 return n1;
 return n1;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
+//>>excludeEnd("ctx");
+}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["whileTrue:"]=1;
 $ctx1.sendIdx["whileTrue:"]=1;
+//>>excludeEnd("ctx");
 n2=(16);
 n2=(16);
 _st((function(){
 _st((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx2) {
 return smalltalk.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
 t2=_st($Date())._millisecondsToRun_((function(){
 t2=_st($Date())._millisecondsToRun_((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx3) {
 return smalltalk.withContext(function($ctx3) {
+//>>excludeEnd("ctx");
 r=_st(n2)._benchFib();
 r=_st(n2)._benchFib();
 return r;
 return r;
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,5)})}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2,5)});
+//>>excludeEnd("ctx");
+}));
 t2;
 t2;
 return _st(t2).__lt((1000));
 return _st(t2).__lt((1000));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)})}))._whileTrue_((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)});
+//>>excludeEnd("ctx");
+}))._whileTrue_((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx2) {
 return smalltalk.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
 n2=_st(n2).__plus((1));
 n2=_st(n2).__plus((1));
 return n2;
 return n2;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,6)})}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,6)});
+//>>excludeEnd("ctx");
+}));
 $7=_st(n1).__star((500000));
 $7=_st(n1).__star((500000));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["*"]=3;
 $ctx1.sendIdx["*"]=3;
+//>>excludeEnd("ctx");
 $6=_st($7).__star((1000));
 $6=_st($7).__star((1000));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["*"]=2;
 $ctx1.sendIdx["*"]=2;
+//>>excludeEnd("ctx");
 $5=_st($6).__slash(t1);
 $5=_st($6).__slash(t1);
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["/"]=1;
 $ctx1.sendIdx["/"]=1;
+//>>excludeEnd("ctx");
 $4=_st($5)._printString();
 $4=_st($5)._printString();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["printString"]=1;
 $ctx1.sendIdx["printString"]=1;
+//>>excludeEnd("ctx");
 $3=_st($4).__comma(" bytecodes/sec; ");
 $3=_st($4).__comma(" bytecodes/sec; ");
 $2=_st($3).__comma(_st(_st(_st(r).__star((1000))).__slash(t2))._printString());
 $2=_st($3).__comma(_st(_st(_st(r).__star((1000))).__slash(t2))._printString());
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx[","]=2;
 $ctx1.sendIdx[","]=2;
+//>>excludeEnd("ctx");
 $1=_st($2).__comma(" sends/sec");
 $1=_st($2).__comma(" sends/sec");
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx[","]=1;
 $ctx1.sendIdx[","]=1;
+//>>excludeEnd("ctx");
 return $1;
 return $1;
-}, function($ctx1) {$ctx1.fill(self,"tinyBenchmarks",{t1:t1,t2:t2,r:r,n1:n1,n2:n2},globals.Number)})},
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"tinyBenchmarks",{t1:t1,t2:t2,r:r,n1:n1,n2:n2},globals.Number)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "tinyBenchmarks\x0a\x09\x22Report the results of running the two tiny Squeak benchmarks.\x0a\x09ar 9/10/1999: Adjusted to run at least 1 sec to get more stable results\x22\x0a\x09\x220 tinyBenchmarks\x22\x0a\x09\x22On a 292 MHz G3 Mac: 22727272 bytecodes/sec; 984169 sends/sec\x22\x0a\x09\x22On a 400 MHz PII/Win98: 18028169 bytecodes/sec; 1081272 sends/sec\x22\x0a\x09| t1 t2 r n1 n2 |\x0a\x09n1 := 1.\x0a\x09[t1 := Date millisecondsToRun: [n1 benchmark].\x0a\x09t1 < 1000] whileTrue:[n1 := n1 * 2]. \x22Note: #benchmark's runtime is about O(n)\x22\x0a\x0a\x09n2 := 16.\x0a\x09[t2 := Date millisecondsToRun: [r := n2 benchFib].\x0a\x09t2 < 1000] whileTrue:[n2 := n2 + 1].\x0a\x09\x22Note: #benchFib's runtime is about O(k^n),\x0a\x09\x09where k is the golden number = (1 + 5 sqrt) / 2 = 1.618....\x22\x0a\x0a\x09^ ((n1 * 500000 * 1000) / t1) printString, ' bytecodes/sec; ',\x0a\x09\x09((r * 1000) / t2) printString, ' sends/sec'",
 source: "tinyBenchmarks\x0a\x09\x22Report the results of running the two tiny Squeak benchmarks.\x0a\x09ar 9/10/1999: Adjusted to run at least 1 sec to get more stable results\x22\x0a\x09\x220 tinyBenchmarks\x22\x0a\x09\x22On a 292 MHz G3 Mac: 22727272 bytecodes/sec; 984169 sends/sec\x22\x0a\x09\x22On a 400 MHz PII/Win98: 18028169 bytecodes/sec; 1081272 sends/sec\x22\x0a\x09| t1 t2 r n1 n2 |\x0a\x09n1 := 1.\x0a\x09[t1 := Date millisecondsToRun: [n1 benchmark].\x0a\x09t1 < 1000] whileTrue:[n1 := n1 * 2]. \x22Note: #benchmark's runtime is about O(n)\x22\x0a\x0a\x09n2 := 16.\x0a\x09[t2 := Date millisecondsToRun: [r := n2 benchFib].\x0a\x09t2 < 1000] whileTrue:[n2 := n2 + 1].\x0a\x09\x22Note: #benchFib's runtime is about O(k^n),\x0a\x09\x09where k is the golden number = (1 + 5 sqrt) / 2 = 1.618....\x22\x0a\x0a\x09^ ((n1 * 500000 * 1000) / t1) printString, ' bytecodes/sec; ',\x0a\x09\x09((r * 1000) / t2) printString, ' sends/sec'",
-messageSends: ["whileTrue:", "millisecondsToRun:", "benchmark", "<", "*", "benchFib", "+", ",", "printString", "/"],
-referencedClasses: ["Date"]
+referencedClasses: ["Date"],
+//>>excludeEnd("ide");
+messageSends: ["whileTrue:", "millisecondsToRun:", "benchmark", "<", "*", "benchFib", "+", ",", "printString", "/"]
 }),
 }),
 globals.Number);
 globals.Number);
 
 

File diff suppressed because it is too large
+ 385 - 108
src/Compiler-AST.js


File diff suppressed because it is too large
+ 377 - 107
src/Compiler-Core.js


+ 108 - 30
src/Compiler-Exceptions.js

@@ -4,38 +4,55 @@ smalltalk.addPackage('Compiler-Exceptions');
 smalltalk.packages["Compiler-Exceptions"].transport = {"type":"amd","amdNamespace":"amber_core"};
 smalltalk.packages["Compiler-Exceptions"].transport = {"type":"amd","amdNamespace":"amber_core"};
 
 
 smalltalk.addClass('CompilerError', globals.Error, [], 'Compiler-Exceptions');
 smalltalk.addClass('CompilerError', globals.Error, [], 'Compiler-Exceptions');
+//>>excludeStart("ide", pragmas.excludeIdeData);
 globals.CompilerError.comment="I am the common superclass of all compiling errors.";
 globals.CompilerError.comment="I am the common superclass of all compiling errors.";
+//>>excludeEnd("ide");
 
 
 
 
 smalltalk.addClass('ParseError', globals.CompilerError, [], 'Compiler-Exceptions');
 smalltalk.addClass('ParseError', globals.CompilerError, [], 'Compiler-Exceptions');
+//>>excludeStart("ide", pragmas.excludeIdeData);
 globals.ParseError.comment="Instance of ParseError are signaled on any parsing error.\x0aSee `Smalltalk >> #parse:`";
 globals.ParseError.comment="Instance of ParseError are signaled on any parsing error.\x0aSee `Smalltalk >> #parse:`";
+//>>excludeEnd("ide");
 
 
 
 
 smalltalk.addClass('SemanticError', globals.CompilerError, [], 'Compiler-Exceptions');
 smalltalk.addClass('SemanticError', globals.CompilerError, [], 'Compiler-Exceptions');
+//>>excludeStart("ide", pragmas.excludeIdeData);
 globals.SemanticError.comment="I represent an abstract semantic error thrown by the SemanticAnalyzer.\x0aSemantic errors can be unknown variable errors, etc.\x0aSee my subclasses for concrete errors.\x0a\x0aThe IDE should catch instances of Semantic error to deal with them when compiling";
 globals.SemanticError.comment="I represent an abstract semantic error thrown by the SemanticAnalyzer.\x0aSemantic errors can be unknown variable errors, etc.\x0aSee my subclasses for concrete errors.\x0a\x0aThe IDE should catch instances of Semantic error to deal with them when compiling";
+//>>excludeEnd("ide");
 
 
 
 
 smalltalk.addClass('InliningError', globals.SemanticError, [], 'Compiler-Exceptions');
 smalltalk.addClass('InliningError', globals.SemanticError, [], 'Compiler-Exceptions');
+//>>excludeStart("ide", pragmas.excludeIdeData);
 globals.InliningError.comment="Instances of InliningError are signaled when using an `InliningCodeGenerator`in a `Compiler`.";
 globals.InliningError.comment="Instances of InliningError are signaled when using an `InliningCodeGenerator`in a `Compiler`.";
+//>>excludeEnd("ide");
 
 
 
 
 smalltalk.addClass('InvalidAssignmentError', globals.SemanticError, ['variableName'], 'Compiler-Exceptions');
 smalltalk.addClass('InvalidAssignmentError', globals.SemanticError, ['variableName'], 'Compiler-Exceptions');
+//>>excludeStart("ide", pragmas.excludeIdeData);
 globals.InvalidAssignmentError.comment="I get signaled when a pseudo variable gets assigned.";
 globals.InvalidAssignmentError.comment="I get signaled when a pseudo variable gets assigned.";
+//>>excludeEnd("ide");
 smalltalk.addMethod(
 smalltalk.addMethod(
 smalltalk.method({
 smalltalk.method({
 selector: "messageText",
 selector: "messageText",
 protocol: 'accessing',
 protocol: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 var $1;
 var $1;
 $1=" Invalid assignment to variable: ".__comma(self._variableName());
 $1=" Invalid assignment to variable: ".__comma(self._variableName());
 return $1;
 return $1;
-}, function($ctx1) {$ctx1.fill(self,"messageText",{},globals.InvalidAssignmentError)})},
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"messageText",{},globals.InvalidAssignmentError)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "messageText\x0a\x09^ ' Invalid assignment to variable: ', self variableName",
 source: "messageText\x0a\x09^ ' Invalid assignment to variable: ', self variableName",
-messageSends: [",", "variableName"],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: [",", "variableName"]
 }),
 }),
 globals.InvalidAssignmentError);
 globals.InvalidAssignmentError);
 
 
@@ -48,11 +65,14 @@ var self=this;
 var $1;
 var $1;
 $1=self["@variableName"];
 $1=self["@variableName"];
 return $1;
 return $1;
+
 },
 },
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "variableName\x0a\x09^ variableName",
 source: "variableName\x0a\x09^ variableName",
-messageSends: [],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: []
 }),
 }),
 globals.InvalidAssignmentError);
 globals.InvalidAssignmentError);
 
 
@@ -63,34 +83,49 @@ protocol: 'accessing',
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
 self["@variableName"]=aString;
 self["@variableName"]=aString;
-return self},
+return self;
+
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aString"],
 args: ["aString"],
 source: "variableName: aString\x0a\x09variableName := aString",
 source: "variableName: aString\x0a\x09variableName := aString",
-messageSends: [],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: []
 }),
 }),
 globals.InvalidAssignmentError);
 globals.InvalidAssignmentError);
 
 
 
 
 
 
 smalltalk.addClass('ShadowingVariableError', globals.SemanticError, ['variableName'], 'Compiler-Exceptions');
 smalltalk.addClass('ShadowingVariableError', globals.SemanticError, ['variableName'], 'Compiler-Exceptions');
+//>>excludeStart("ide", pragmas.excludeIdeData);
 globals.ShadowingVariableError.comment="I get signaled when a variable in a block or method scope shadows a variable of the same name in an outer scope.";
 globals.ShadowingVariableError.comment="I get signaled when a variable in a block or method scope shadows a variable of the same name in an outer scope.";
+//>>excludeEnd("ide");
 smalltalk.addMethod(
 smalltalk.addMethod(
 smalltalk.method({
 smalltalk.method({
 selector: "messageText",
 selector: "messageText",
 protocol: 'accessing',
 protocol: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 var $1;
 var $1;
 $1=_st("Variable shadowing error: ".__comma(self._variableName())).__comma(" is already defined");
 $1=_st("Variable shadowing error: ".__comma(self._variableName())).__comma(" is already defined");
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx[","]=1;
 $ctx1.sendIdx[","]=1;
+//>>excludeEnd("ctx");
 return $1;
 return $1;
-}, function($ctx1) {$ctx1.fill(self,"messageText",{},globals.ShadowingVariableError)})},
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"messageText",{},globals.ShadowingVariableError)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "messageText\x0a\x09^ 'Variable shadowing error: ', self variableName, ' is already defined'",
 source: "messageText\x0a\x09^ 'Variable shadowing error: ', self variableName, ' is already defined'",
-messageSends: [",", "variableName"],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: [",", "variableName"]
 }),
 }),
 globals.ShadowingVariableError);
 globals.ShadowingVariableError);
 
 
@@ -103,11 +138,14 @@ var self=this;
 var $1;
 var $1;
 $1=self["@variableName"];
 $1=self["@variableName"];
 return $1;
 return $1;
+
 },
 },
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "variableName\x0a\x09^ variableName",
 source: "variableName\x0a\x09^ variableName",
-messageSends: [],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: []
 }),
 }),
 globals.ShadowingVariableError);
 globals.ShadowingVariableError);
 
 
@@ -118,34 +156,49 @@ protocol: 'accessing',
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
 self["@variableName"]=aString;
 self["@variableName"]=aString;
-return self},
+return self;
+
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aString"],
 args: ["aString"],
 source: "variableName: aString\x0a\x09variableName := aString",
 source: "variableName: aString\x0a\x09variableName := aString",
-messageSends: [],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: []
 }),
 }),
 globals.ShadowingVariableError);
 globals.ShadowingVariableError);
 
 
 
 
 
 
 smalltalk.addClass('UnknownVariableError', globals.SemanticError, ['variableName'], 'Compiler-Exceptions');
 smalltalk.addClass('UnknownVariableError', globals.SemanticError, ['variableName'], 'Compiler-Exceptions');
+//>>excludeStart("ide", pragmas.excludeIdeData);
 globals.UnknownVariableError.comment="I get signaled when a variable is not defined.\x0aThe default behavior is to allow it, as this is how Amber currently is able to seamlessly send messages to JavaScript objects.";
 globals.UnknownVariableError.comment="I get signaled when a variable is not defined.\x0aThe default behavior is to allow it, as this is how Amber currently is able to seamlessly send messages to JavaScript objects.";
+//>>excludeEnd("ide");
 smalltalk.addMethod(
 smalltalk.addMethod(
 smalltalk.method({
 smalltalk.method({
 selector: "messageText",
 selector: "messageText",
 protocol: 'accessing',
 protocol: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 var $1;
 var $1;
 $1=_st("Unknown Variable error: ".__comma(self._variableName())).__comma(" is not defined");
 $1=_st("Unknown Variable error: ".__comma(self._variableName())).__comma(" is not defined");
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx[","]=1;
 $ctx1.sendIdx[","]=1;
+//>>excludeEnd("ctx");
 return $1;
 return $1;
-}, function($ctx1) {$ctx1.fill(self,"messageText",{},globals.UnknownVariableError)})},
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"messageText",{},globals.UnknownVariableError)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "messageText\x0a\x09^ 'Unknown Variable error: ', self variableName, ' is not defined'",
 source: "messageText\x0a\x09^ 'Unknown Variable error: ', self variableName, ' is not defined'",
-messageSends: [",", "variableName"],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: [",", "variableName"]
 }),
 }),
 globals.UnknownVariableError);
 globals.UnknownVariableError);
 
 
@@ -158,11 +211,14 @@ var self=this;
 var $1;
 var $1;
 $1=self["@variableName"];
 $1=self["@variableName"];
 return $1;
 return $1;
+
 },
 },
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "variableName\x0a\x09^ variableName",
 source: "variableName\x0a\x09^ variableName",
-messageSends: [],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: []
 }),
 }),
 globals.UnknownVariableError);
 globals.UnknownVariableError);
 
 
@@ -173,31 +229,45 @@ protocol: 'accessing',
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
 self["@variableName"]=aString;
 self["@variableName"]=aString;
-return self},
+return self;
+
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aString"],
 args: ["aString"],
 source: "variableName: aString\x0a\x09variableName := aString",
 source: "variableName: aString\x0a\x09variableName := aString",
-messageSends: [],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: []
 }),
 }),
 globals.UnknownVariableError);
 globals.UnknownVariableError);
 
 
 
 
 
 
 smalltalk.addClass('RethrowErrorHandler', globals.Object, [], 'Compiler-Exceptions');
 smalltalk.addClass('RethrowErrorHandler', globals.Object, [], 'Compiler-Exceptions');
+//>>excludeStart("ide", pragmas.excludeIdeData);
 globals.RethrowErrorHandler.comment="This class is used in the commandline version of the compiler.\x0aIt uses the handleError: message of ErrorHandler for printing the stacktrace and throws the error again as JS exception.\x0aAs a result Smalltalk errors are not swallowd by the Amber runtime and compilation can be aborted.";
 globals.RethrowErrorHandler.comment="This class is used in the commandline version of the compiler.\x0aIt uses the handleError: message of ErrorHandler for printing the stacktrace and throws the error again as JS exception.\x0aAs a result Smalltalk errors are not swallowd by the Amber runtime and compilation can be aborted.";
+//>>excludeEnd("ide");
 smalltalk.addMethod(
 smalltalk.addMethod(
 smalltalk.method({
 smalltalk.method({
 selector: "basicSignal:",
 selector: "basicSignal:",
 protocol: 'error handling',
 protocol: 'error handling',
 fn: function (anError){
 fn: function (anError){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 throw anError;
 throw anError;
-return self}, function($ctx1) {$ctx1.fill(self,"basicSignal:",{anError:anError},globals.RethrowErrorHandler)})},
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"basicSignal:",{anError:anError},globals.RethrowErrorHandler)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["anError"],
 args: ["anError"],
 source: "basicSignal: anError\x0a        <throw anError>",
 source: "basicSignal: anError\x0a        <throw anError>",
-messageSends: [],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: []
 }),
 }),
 globals.RethrowErrorHandler);
 globals.RethrowErrorHandler);
 
 
@@ -207,13 +277,21 @@ selector: "handleError:",
 protocol: 'error handling',
 protocol: 'error handling',
 fn: function (anError){
 fn: function (anError){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 self._basicSignal_(anError);
 self._basicSignal_(anError);
-return self}, function($ctx1) {$ctx1.fill(self,"handleError:",{anError:anError},globals.RethrowErrorHandler)})},
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"handleError:",{anError:anError},globals.RethrowErrorHandler)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["anError"],
 args: ["anError"],
 source: "handleError: anError\x0a        self basicSignal: anError",
 source: "handleError: anError\x0a        self basicSignal: anError",
-messageSends: ["basicSignal:"],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["basicSignal:"]
 }),
 }),
 globals.RethrowErrorHandler);
 globals.RethrowErrorHandler);
 
 

File diff suppressed because it is too large
+ 431 - 88
src/Compiler-IR.js


+ 43 - 13
src/Compiler-IR.st

@@ -197,10 +197,13 @@ visitMethodNode: aNode
 
 
 	aNode nodes do: [ :each | self method add: (self visit: each) ].
 	aNode nodes do: [ :each | self method add: (self visit: each) ].
 
 
-	aNode scope hasLocalReturn ifFalse: [
-		(self method add: IRReturn new) add: (IRVariable new
-			variable: (aNode scope pseudoVars at: 'self');
-			yourself) ].
+	aNode scope hasLocalReturn ifFalse: [self method
+		add: (IRReturn new
+			add: (IRVariable new
+				variable: (aNode scope pseudoVars at: 'self');
+				yourself);
+			yourself);
+		add: (IRVerbatim new source: ''; yourself) ].
 
 
 	^ self method
 	^ self method
 !
 !
@@ -1059,7 +1062,10 @@ visitSend: anIRSend
 
 
 visitSuperSend: anIRSend
 visitSuperSend: anIRSend
 	self stream
 	self stream
-		nextPutAll: '(', anIRSend scope alias, '.supercall = true, ';
+		nextPutAll: '('; lf;
+		nextPutAll: '//>>excludeStart("ctx", pragmas.excludeDebugContexts);'; lf;
+		nextPutAll: anIRSend scope alias, '.supercall = true, '; lf;
+		nextPutAll: '//>>excludeEnd("ctx");'; lf;
 		nextPutAll: self currentClass asJavascript;
 		nextPutAll: self currentClass asJavascript;
 		nextPutAll: '.superclass.fn.prototype.';
 		nextPutAll: '.superclass.fn.prototype.';
 		nextPutAll: anIRSend selector asJavaScriptMethodName, '.apply(';
 		nextPutAll: anIRSend selector asJavaScriptMethodName, '.apply(';
@@ -1071,7 +1077,9 @@ visitSuperSend: anIRSend
 		separatedBy: [ self stream nextPutAll: ',' ].
 		separatedBy: [ self stream nextPutAll: ',' ].
 	self stream 
 	self stream 
 		nextPutAll: ']));'; lf;
 		nextPutAll: ']));'; lf;
-		nextPutAll: anIRSend scope alias, '.supercall = false'
+		nextPutAll: '//>>excludeStart("ctx", pragmas.excludeDebugContexts);'; lf;
+		nextPutAll: anIRSend scope alias, '.supercall = false;'; lf;
+		nextPutAll: '//>>excludeEnd("ctx");'
 ! !
 ! !
 
 
 Object subclass: #JSStream
 Object subclass: #JSStream
@@ -1112,11 +1120,18 @@ nextPutAssignment
 nextPutBlockContextFor: anIRClosure during: aBlock
 nextPutBlockContextFor: anIRClosure during: aBlock
 	anIRClosure requiresSmalltalkContext ifFalse: [ ^ aBlock value ].
 	anIRClosure requiresSmalltalkContext ifFalse: [ ^ aBlock value ].
 	self
 	self
-		nextPutAll: 'return smalltalk.withContext(function(', anIRClosure scope alias, ') {'; lf.
+		nextPutAll: '//>>excludeStart("ctx", pragmas.excludeDebugContexts);';
+		lf;
+		nextPutAll: 'return smalltalk.withContext(function(', anIRClosure scope alias, ') {';
+		lf;
+		nextPutAll: '//>>excludeEnd("ctx");';
+		lf.
 	
 	
 	aBlock value.
 	aBlock value.
 	
 	
 	self
 	self
+		nextPutAll: '//>>excludeStart("ctx", pragmas.excludeDebugContexts);';
+		lf;
 		nextPutAll: '}, function(', anIRClosure scope alias, ') {';
 		nextPutAll: '}, function(', anIRClosure scope alias, ') {';
 		nextPutAll: anIRClosure scope alias, '.fillBlock({'.
 		nextPutAll: anIRClosure scope alias, '.fillBlock({'.
 	
 	
@@ -1130,7 +1145,9 @@ nextPutBlockContextFor: anIRClosure during: aBlock
 	
 	
 	self
 	self
 		nextPutAll: '},';
 		nextPutAll: '},';
-		nextPutAll: anIRClosure scope outerScope alias, ',', anIRClosure scope blockIndex asString, ')})'
+		nextPutAll: anIRClosure scope outerScope alias, ',', anIRClosure scope blockIndex asString, ')});';
+		lf;
+		nextPutAll: '//>>excludeEnd("ctx");'
 !
 !
 
 
 nextPutClassRefFunction: aString
 nextPutClassRefFunction: aString
@@ -1157,17 +1174,25 @@ nextPutClosureWith: aBlock arguments: anArray
 		separatedBy: [ stream nextPut: ',' ].
 		separatedBy: [ stream nextPut: ',' ].
 	stream nextPutAll: '){'; lf.
 	stream nextPutAll: '){'; lf.
 	aBlock value.
 	aBlock value.
-	stream nextPutAll: '})'
+	stream lf; nextPutAll: '})'
 !
 !
 
 
 nextPutContextFor: aMethod during: aBlock
 nextPutContextFor: aMethod during: aBlock
 	aMethod requiresSmalltalkContext ifFalse: [ ^ aBlock value ].
 	aMethod requiresSmalltalkContext ifFalse: [ ^ aBlock value ].
 	
 	
 	self
 	self
-		nextPutAll: 'return smalltalk.withContext(function(', aMethod scope alias, ') { '; lf.
+		nextPutAll: '//>>excludeStart("ctx", pragmas.excludeDebugContexts);';
+		lf;
+		nextPutAll: 'return smalltalk.withContext(function(', aMethod scope alias, ') { ';
+		lf;
+		nextPutAll: '//>>excludeEnd("ctx");';
+		lf.
+
 	aBlock value.
 	aBlock value.
 	
 	
 	self
 	self
+		nextPutAll: '//>>excludeStart("ctx", pragmas.excludeDebugContexts);';
+		lf;
 		nextPutAll: '}, function(', aMethod scope alias, ') {', aMethod scope alias;
 		nextPutAll: '}, function(', aMethod scope alias, ') {', aMethod scope alias;
 		nextPutAll: '.fill(self,', aMethod selector asJavascript, ',{'.
 		nextPutAll: '.fill(self,', aMethod selector asJavascript, ',{'.
 
 
@@ -1182,7 +1207,9 @@ nextPutContextFor: aMethod during: aBlock
 	self
 	self
 		nextPutAll: '},';
 		nextPutAll: '},';
 		nextPutAll: aMethod theClass asJavascript;
 		nextPutAll: aMethod theClass asJavascript;
-		nextPutAll: ')})'
+		nextPutAll: ')});';
+		lf;
+		nextPutAll: '//>>excludeEnd("ctx");'
 !
 !
 
 
 nextPutFunctionWith: aBlock arguments: anArray
 nextPutFunctionWith: aBlock arguments: anArray
@@ -1193,7 +1220,7 @@ nextPutFunctionWith: aBlock arguments: anArray
 	stream nextPutAll: '){'; lf.
 	stream nextPutAll: '){'; lf.
 	stream nextPutAll: 'var self=this;'; lf.
 	stream nextPutAll: 'var self=this;'; lf.
 	aBlock value.
 	aBlock value.
-	stream nextPutAll: '}'
+	stream lf; nextPutAll: '}'
 !
 !
 
 
 nextPutIf: aBlock with: anotherBlock
 nextPutIf: aBlock with: anotherBlock
@@ -1261,11 +1288,14 @@ nextPutReturnWith: aBlock
 nextPutSendIndexFor: anIRSend
 nextPutSendIndexFor: anIRSend
 	self 
 	self 
 		nextPutAll: ';'; lf;
 		nextPutAll: ';'; lf;
+		nextPutAll: '//>>excludeStart("ctx", pragmas.excludeDebugContexts);'; lf;
 		nextPutAll: anIRSend scope alias;
 		nextPutAll: anIRSend scope alias;
 		nextPutAll: '.sendIdx[';
 		nextPutAll: '.sendIdx[';
 		nextPutAll: anIRSend selector asJavascript;
 		nextPutAll: anIRSend selector asJavascript;
 		nextPutAll: ']=';
 		nextPutAll: ']=';
-		nextPutAll: anIRSend index asString
+		nextPutAll: anIRSend index asString;
+		nextPutAll: ';'; lf;
+		nextPutAll: '//>>excludeEnd("ctx")'
 !
 !
 
 
 nextPutSequenceWith: aBlock
 nextPutSequenceWith: aBlock

File diff suppressed because it is too large
+ 402 - 98
src/Compiler-Inlining.js


File diff suppressed because it is too large
+ 393 - 111
src/Compiler-Interpreter.js


File diff suppressed because it is too large
+ 378 - 104
src/Compiler-Semantic.js


File diff suppressed because it is too large
+ 429 - 92
src/Compiler-Tests.js


+ 96 - 20
src/Examples.js

@@ -4,24 +4,39 @@ smalltalk.addPackage('Examples');
 smalltalk.packages["Examples"].transport = {"type":"amd","amdNamespace":"amber_core"};
 smalltalk.packages["Examples"].transport = {"type":"amd","amdNamespace":"amber_core"};
 
 
 smalltalk.addClass('Counter', globals.Widget, ['count', 'header'], 'Examples');
 smalltalk.addClass('Counter', globals.Widget, ['count', 'header'], 'Examples');
+//>>excludeStart("ide", pragmas.excludeIdeData);
 globals.Counter.comment="This is a trivial Widget example mimicking the classic Counter example in Seaside.\x0aIn order to play with it, just evaluate the doit below in a workspace.\x0aThen take a look in the HTML document above the IDE.\x0a\x0a\x09\x09Counter tryExample";
 globals.Counter.comment="This is a trivial Widget example mimicking the classic Counter example in Seaside.\x0aIn order to play with it, just evaluate the doit below in a workspace.\x0aThen take a look in the HTML document above the IDE.\x0a\x0a\x09\x09Counter tryExample";
+//>>excludeEnd("ide");
 smalltalk.addMethod(
 smalltalk.addMethod(
 smalltalk.method({
 smalltalk.method({
 selector: "decrease",
 selector: "decrease",
 protocol: 'actions',
 protocol: 'actions',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 self["@count"]=_st(self["@count"]).__minus((1));
 self["@count"]=_st(self["@count"]).__minus((1));
 _st(self["@header"])._contents_((function(html){
 _st(self["@header"])._contents_((function(html){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx2) {
 return smalltalk.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
 return _st(html)._with_(_st(self["@count"])._asString());
 return _st(html)._with_(_st(self["@count"])._asString());
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"decrease",{},globals.Counter)})},
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1,1)});
+//>>excludeEnd("ctx");
+}));
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"decrease",{},globals.Counter)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "decrease\x0a\x09count := count - 1.\x0a\x09header contents: [ :html | html with: count asString ]",
 source: "decrease\x0a\x09count := count - 1.\x0a\x09header contents: [ :html | html with: count asString ]",
-messageSends: ["-", "contents:", "with:", "asString"],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["-", "contents:", "with:", "asString"]
 }),
 }),
 globals.Counter);
 globals.Counter);
 
 
@@ -31,17 +46,30 @@ selector: "increase",
 protocol: 'actions',
 protocol: 'actions',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 self["@count"]=_st(self["@count"]).__plus((1));
 self["@count"]=_st(self["@count"]).__plus((1));
 _st(self["@header"])._contents_((function(html){
 _st(self["@header"])._contents_((function(html){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx2) {
 return smalltalk.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
 return _st(html)._with_(_st(self["@count"])._asString());
 return _st(html)._with_(_st(self["@count"])._asString());
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"increase",{},globals.Counter)})},
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1,1)});
+//>>excludeEnd("ctx");
+}));
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"increase",{},globals.Counter)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "increase\x0a\x09count := count + 1.\x0a\x09header contents: [ :html | html with: count asString ]",
 source: "increase\x0a\x09count := count + 1.\x0a\x09header contents: [ :html | html with: count asString ]",
-messageSends: ["+", "contents:", "with:", "asString"],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["+", "contents:", "with:", "asString"]
 }),
 }),
 globals.Counter);
 globals.Counter);
 
 
@@ -51,15 +79,29 @@ selector: "initialize",
 protocol: 'initialization',
 protocol: 'initialization',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
-($ctx1.supercall = true, globals.Counter.superclass.fn.prototype._initialize.apply(_st(self), []));
+//>>excludeEnd("ctx");
+(
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.supercall = true, 
+//>>excludeEnd("ctx");
+globals.Counter.superclass.fn.prototype._initialize.apply(_st(self), []));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.supercall = false;
 $ctx1.supercall = false;
+//>>excludeEnd("ctx");;
 self["@count"]=(0);
 self["@count"]=(0);
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},globals.Counter)})},
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"initialize",{},globals.Counter)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "initialize\x0a\x09super initialize.\x0a\x09count := 0",
 source: "initialize\x0a\x09super initialize.\x0a\x09count := 0",
-messageSends: ["initialize"],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["initialize"]
 }),
 }),
 globals.Counter);
 globals.Counter);
 
 
@@ -69,33 +111,59 @@ selector: "renderOn:",
 protocol: 'rendering',
 protocol: 'rendering',
 fn: function (html){
 fn: function (html){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 var $1,$2,$3,$4,$5,$6;
 var $1,$2,$3,$4,$5,$6;
 $1=_st(html)._h1();
 $1=_st(html)._h1();
 _st($1)._with_(_st(self["@count"])._asString());
 _st($1)._with_(_st(self["@count"])._asString());
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["with:"]=1;
 $ctx1.sendIdx["with:"]=1;
+//>>excludeEnd("ctx");
 $2=_st($1)._yourself();
 $2=_st($1)._yourself();
 self["@header"]=$2;
 self["@header"]=$2;
 $3=_st(html)._button();
 $3=_st(html)._button();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["button"]=1;
 $ctx1.sendIdx["button"]=1;
+//>>excludeEnd("ctx");
 _st($3)._with_("++");
 _st($3)._with_("++");
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["with:"]=2;
 $ctx1.sendIdx["with:"]=2;
+//>>excludeEnd("ctx");
 $4=_st($3)._onClick_((function(){
 $4=_st($3)._onClick_((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx2) {
 return smalltalk.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
 return self._increase();
 return self._increase();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
+//>>excludeEnd("ctx");
+}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["onClick:"]=1;
 $ctx1.sendIdx["onClick:"]=1;
+//>>excludeEnd("ctx");
 $5=_st(html)._button();
 $5=_st(html)._button();
 _st($5)._with_("--");
 _st($5)._with_("--");
 $6=_st($5)._onClick_((function(){
 $6=_st($5)._onClick_((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx2) {
 return smalltalk.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
 return self._decrease();
 return self._decrease();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderOn:",{html:html},globals.Counter)})},
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
+//>>excludeEnd("ctx");
+}));
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"renderOn:",{html:html},globals.Counter)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["html"],
 args: ["html"],
 source: "renderOn: html\x0a\x09header := html h1\x0a\x09\x09with: count asString;\x0a\x09\x09yourself.\x0a\x09html button\x0a\x09\x09with: '++';\x0a\x09\x09onClick: [ self increase ].\x0a\x09html button\x0a\x09\x09with: '--';\x0a\x09\x09onClick: [ self decrease ]",
 source: "renderOn: html\x0a\x09header := html h1\x0a\x09\x09with: count asString;\x0a\x09\x09yourself.\x0a\x09html button\x0a\x09\x09with: '++';\x0a\x09\x09onClick: [ self increase ].\x0a\x09html button\x0a\x09\x09with: '--';\x0a\x09\x09onClick: [ self decrease ]",
-messageSends: ["with:", "h1", "asString", "yourself", "button", "onClick:", "increase", "decrease"],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["with:", "h1", "asString", "yourself", "button", "onClick:", "increase", "decrease"]
 }),
 }),
 globals.Counter);
 globals.Counter);
 
 
@@ -106,13 +174,21 @@ selector: "tryExample",
 protocol: 'example',
 protocol: 'example',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 _st(self._new())._appendToJQuery_("body"._asJQuery());
 _st(self._new())._appendToJQuery_("body"._asJQuery());
-return self}, function($ctx1) {$ctx1.fill(self,"tryExample",{},globals.Counter.klass)})},
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"tryExample",{},globals.Counter.klass)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "tryExample\x0a\x09\x22In order to play with the Counter, just select the\x0a\x09doit below and press the Do it button. Then take a\x0a\x09look in the HTML document above the IDE.\x22\x0a\x0a\x09\x22Counter tryExample\x22\x0a\x09\x09self new appendToJQuery: 'body' asJQuery",
 source: "tryExample\x0a\x09\x22In order to play with the Counter, just select the\x0a\x09doit below and press the Do it button. Then take a\x0a\x09look in the HTML document above the IDE.\x22\x0a\x0a\x09\x22Counter tryExample\x22\x0a\x09\x09self new appendToJQuery: 'body' asJQuery",
-messageSends: ["appendToJQuery:", "new", "asJQuery"],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["appendToJQuery:", "new", "asJQuery"]
 }),
 }),
 globals.Counter.klass);
 globals.Counter.klass);
 
 

File diff suppressed because it is too large
+ 407 - 111
src/IDE.js


File diff suppressed because it is too large
+ 365 - 100
src/Kernel-Announcements.js


File diff suppressed because it is too large
+ 413 - 96
src/Kernel-Classes.js


File diff suppressed because it is too large
+ 407 - 108
src/Kernel-Collections.js


+ 336 - 94
src/Kernel-Exceptions.js

@@ -4,20 +4,30 @@ smalltalk.addPackage('Kernel-Exceptions');
 smalltalk.packages["Kernel-Exceptions"].transport = {"type":"amd","amdNamespace":"amber_core"};
 smalltalk.packages["Kernel-Exceptions"].transport = {"type":"amd","amdNamespace":"amber_core"};
 
 
 smalltalk.addClass('Error', globals.Object, ['messageText'], 'Kernel-Exceptions');
 smalltalk.addClass('Error', globals.Object, ['messageText'], 'Kernel-Exceptions');
+//>>excludeStart("ide", pragmas.excludeIdeData);
 globals.Error.comment="From the ANSI standard:\x0a\x0aThis protocol describes the behavior of instances of class `Error`.\x0aThese are used to represent error conditions that prevent the normal continuation of processing.\x0aActual error exceptions used by an application may be subclasses of this class.\x0aAs `Error` is explicitly specified to be subclassable, conforming implementations must implement its behavior in a non-fragile manner.";
 globals.Error.comment="From the ANSI standard:\x0a\x0aThis protocol describes the behavior of instances of class `Error`.\x0aThese are used to represent error conditions that prevent the normal continuation of processing.\x0aActual error exceptions used by an application may be subclasses of this class.\x0aAs `Error` is explicitly specified to be subclassable, conforming implementations must implement its behavior in a non-fragile manner.";
+//>>excludeEnd("ide");
 smalltalk.addMethod(
 smalltalk.addMethod(
 smalltalk.method({
 smalltalk.method({
 selector: "beHandled",
 selector: "beHandled",
 protocol: 'accessing',
 protocol: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 self.amberHandled = true;
 self.amberHandled = true;
-return self}, function($ctx1) {$ctx1.fill(self,"beHandled",{},globals.Error)})},
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"beHandled",{},globals.Error)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "beHandled\x0a\x09<self.amberHandled = true>",
 source: "beHandled\x0a\x09<self.amberHandled = true>",
-messageSends: [],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: []
 }),
 }),
 globals.Error);
 globals.Error);
 
 
@@ -27,13 +37,21 @@ selector: "beUnhandled",
 protocol: 'accessing',
 protocol: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 self.amberHandled = false;
 self.amberHandled = false;
-return self}, function($ctx1) {$ctx1.fill(self,"beUnhandled",{},globals.Error)})},
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"beUnhandled",{},globals.Error)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "beUnhandled\x0a\x09<self.amberHandled = false>",
 source: "beUnhandled\x0a\x09<self.amberHandled = false>",
-messageSends: [],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: []
 }),
 }),
 globals.Error);
 globals.Error);
 
 
@@ -43,13 +61,21 @@ selector: "context",
 protocol: 'accessing',
 protocol: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 return self.context;
 return self.context;
-return self}, function($ctx1) {$ctx1.fill(self,"context",{},globals.Error)})},
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"context",{},globals.Error)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "context\x0a\x09<return self.context>",
 source: "context\x0a\x09<return self.context>",
-messageSends: [],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: []
 }),
 }),
 globals.Error);
 globals.Error);
 
 
@@ -59,13 +85,21 @@ selector: "initialize",
 protocol: 'initialization',
 protocol: 'initialization',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 self._messageText_("Errorclass: ".__comma(_st(self._class())._name()));
 self._messageText_("Errorclass: ".__comma(_st(self._class())._name()));
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},globals.Error)})},
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"initialize",{},globals.Error)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "initialize\x0a\x09self messageText: 'Errorclass: ', (self class name).",
 source: "initialize\x0a\x09self messageText: 'Errorclass: ', (self class name).",
-messageSends: ["messageText:", ",", "name", "class"],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["messageText:", ",", "name", "class"]
 }),
 }),
 globals.Error);
 globals.Error);
 
 
@@ -75,13 +109,21 @@ selector: "isSmalltalkError",
 protocol: 'testing',
 protocol: 'testing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 return self.smalltalkError === true;
 return self.smalltalkError === true;
-return self}, function($ctx1) {$ctx1.fill(self,"isSmalltalkError",{},globals.Error)})},
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"isSmalltalkError",{},globals.Error)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "isSmalltalkError\x0a\x09<return self.smalltalkError === true>",
 source: "isSmalltalkError\x0a\x09<return self.smalltalkError === true>",
-messageSends: [],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: []
 }),
 }),
 globals.Error);
 globals.Error);
 
 
@@ -91,13 +133,21 @@ selector: "jsStack",
 protocol: 'accessing',
 protocol: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 return self.stack;
 return self.stack;
-return self}, function($ctx1) {$ctx1.fill(self,"jsStack",{},globals.Error)})},
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"jsStack",{},globals.Error)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "jsStack\x0a\x09<return self.stack>",
 source: "jsStack\x0a\x09<return self.stack>",
-messageSends: [],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: []
 }),
 }),
 globals.Error);
 globals.Error);
 
 
@@ -110,11 +160,14 @@ var self=this;
 var $1;
 var $1;
 $1=self["@messageText"];
 $1=self["@messageText"];
 return $1;
 return $1;
+
 },
 },
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "messageText\x0a\x09^ messageText",
 source: "messageText\x0a\x09^ messageText",
-messageSends: [],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: []
 }),
 }),
 globals.Error);
 globals.Error);
 
 
@@ -125,11 +178,15 @@ protocol: 'accessing',
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
 self["@messageText"]=aString;
 self["@messageText"]=aString;
-return self},
+return self;
+
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aString"],
 args: ["aString"],
 source: "messageText: aString\x0a\x09messageText := aString",
 source: "messageText: aString\x0a\x09messageText := aString",
-messageSends: [],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: []
 }),
 }),
 globals.Error);
 globals.Error);
 
 
@@ -139,16 +196,24 @@ selector: "resignal",
 protocol: 'signaling',
 protocol: 'signaling',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 
 
 		self.amberHandled = false;
 		self.amberHandled = false;
 		throw(self);
 		throw(self);
 	;
 	;
-return self}, function($ctx1) {$ctx1.fill(self,"resignal",{},globals.Error)})},
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"resignal",{},globals.Error)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "resignal\x0a\x09\x22Resignal the receiver without changing its exception context\x22\x0a\x09\x0a\x09<\x0a\x09\x09self.amberHandled = false;\x0a\x09\x09throw(self);\x0a\x09>",
 source: "resignal\x0a\x09\x22Resignal the receiver without changing its exception context\x22\x0a\x09\x0a\x09<\x0a\x09\x09self.amberHandled = false;\x0a\x09\x09throw(self);\x0a\x09>",
-messageSends: [],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: []
 }),
 }),
 globals.Error);
 globals.Error);
 
 
@@ -158,17 +223,25 @@ selector: "signal",
 protocol: 'signaling',
 protocol: 'signaling',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 
 
 		self.amberHandled = false;
 		self.amberHandled = false;
 		self.context = smalltalk.getThisContext(); 
 		self.context = smalltalk.getThisContext(); 
 		self.smalltalkError = true; throw(self)
 		self.smalltalkError = true; throw(self)
 	;
 	;
-return self}, function($ctx1) {$ctx1.fill(self,"signal",{},globals.Error)})},
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"signal",{},globals.Error)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "signal\x0a\x09<\x0a\x09\x09self.amberHandled = false;\x0a\x09\x09self.context = smalltalk.getThisContext(); \x0a\x09\x09self.smalltalkError = true; throw(self)\x0a\x09>",
 source: "signal\x0a\x09<\x0a\x09\x09self.amberHandled = false;\x0a\x09\x09self.context = smalltalk.getThisContext(); \x0a\x09\x09self.smalltalkError = true; throw(self)\x0a\x09>",
-messageSends: [],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: []
 }),
 }),
 globals.Error);
 globals.Error);
 
 
@@ -178,14 +251,22 @@ selector: "signal:",
 protocol: 'signaling',
 protocol: 'signaling',
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 self._messageText_(aString);
 self._messageText_(aString);
 self._signal();
 self._signal();
-return self}, function($ctx1) {$ctx1.fill(self,"signal:",{aString:aString},globals.Error)})},
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"signal:",{aString:aString},globals.Error)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aString"],
 args: ["aString"],
 source: "signal: aString\x0a\x09self messageText: aString.\x0a\x09self signal",
 source: "signal: aString\x0a\x09self messageText: aString.\x0a\x09self signal",
-messageSends: ["messageText:", "signal"],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["messageText:", "signal"]
 }),
 }),
 globals.Error);
 globals.Error);
 
 
@@ -195,15 +276,22 @@ selector: "signalerContext",
 protocol: 'accessing',
 protocol: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 var $1;
 var $1;
 $1=self._signalerContextFrom_(self._context());
 $1=self._signalerContextFrom_(self._context());
 return $1;
 return $1;
-}, function($ctx1) {$ctx1.fill(self,"signalerContext",{},globals.Error)})},
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"signalerContext",{},globals.Error)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "signalerContext\x0a\x09^ self signalerContextFrom: self context",
 source: "signalerContext\x0a\x09^ self signalerContextFrom: self context",
-messageSends: ["signalerContextFrom:", "context"],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["signalerContextFrom:", "context"]
 }),
 }),
 globals.Error);
 globals.Error);
 
 
@@ -213,26 +301,47 @@ selector: "signalerContextFrom:",
 protocol: 'accessing',
 protocol: 'accessing',
 fn: function (aContext){
 fn: function (aContext){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 var $4,$3,$2,$1;
 var $4,$3,$2,$1;
 $1=_st(aContext)._findContextSuchThat_((function(context){
 $1=_st(aContext)._findContextSuchThat_((function(context){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx2) {
 return smalltalk.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
 $4=_st(context)._receiver();
 $4=_st(context)._receiver();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["receiver"]=1;
 $ctx2.sendIdx["receiver"]=1;
+//>>excludeEnd("ctx");
 $3=_st($4).__eq_eq(self);
 $3=_st($4).__eq_eq(self);
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["=="]=1;
 $ctx2.sendIdx["=="]=1;
+//>>excludeEnd("ctx");
 $2=_st($3)._or_((function(){
 $2=_st($3)._or_((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx3) {
 return smalltalk.withContext(function($ctx3) {
+//>>excludeEnd("ctx");
 return _st(_st(context)._receiver()).__eq_eq(self._class());
 return _st(_st(context)._receiver()).__eq_eq(self._class());
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
+//>>excludeEnd("ctx");
+}));
 return _st($2)._not();
 return _st($2)._not();
-}, function($ctx2) {$ctx2.fillBlock({context:context},$ctx1,1)})}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({context:context},$ctx1,1)});
+//>>excludeEnd("ctx");
+}));
 return $1;
 return $1;
-}, function($ctx1) {$ctx1.fill(self,"signalerContextFrom:",{aContext:aContext},globals.Error)})},
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"signalerContextFrom:",{aContext:aContext},globals.Error)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aContext"],
 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: [ :context |\x0a\x09\x09(context receiver == self \x0a\x09\x09or: [ context receiver == self class ]) not ]",
 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: [ :context |\x0a\x09\x09(context receiver == self \x0a\x09\x09or: [ context receiver == self class ]) not ]",
-messageSends: ["findContextSuchThat:", "not", "or:", "==", "receiver", "class"],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["findContextSuchThat:", "not", "or:", "==", "receiver", "class"]
 }),
 }),
 globals.Error);
 globals.Error);
 
 
@@ -242,13 +351,21 @@ selector: "wasHandled",
 protocol: 'testing',
 protocol: 'testing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 return self.amberHandled || false;
 return self.amberHandled || false;
-return self}, function($ctx1) {$ctx1.fill(self,"wasHandled",{},globals.Error)})},
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"wasHandled",{},globals.Error)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "wasHandled\x0a\x09<return self.amberHandled || false>",
 source: "wasHandled\x0a\x09<return self.amberHandled || false>",
-messageSends: [],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: []
 }),
 }),
 globals.Error);
 globals.Error);
 
 
@@ -260,11 +377,14 @@ protocol: 'helios',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 return "exception";
 return "exception";
+
 },
 },
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "heliosClass\x0a\x09^ 'exception'",
 source: "heliosClass\x0a\x09^ 'exception'",
-messageSends: [],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: []
 }),
 }),
 globals.Error.klass);
 globals.Error.klass);
 
 
@@ -274,15 +394,22 @@ selector: "signal",
 protocol: 'instance creation',
 protocol: 'instance creation',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 var $1;
 var $1;
 $1=_st(self._new())._signal();
 $1=_st(self._new())._signal();
 return $1;
 return $1;
-}, function($ctx1) {$ctx1.fill(self,"signal",{},globals.Error.klass)})},
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"signal",{},globals.Error.klass)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "signal\x0a\x09^ self new signal",
 source: "signal\x0a\x09^ self new signal",
-messageSends: ["signal", "new"],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["signal", "new"]
 }),
 }),
 globals.Error.klass);
 globals.Error.klass);
 
 
@@ -292,21 +419,30 @@ selector: "signal:",
 protocol: 'instance creation',
 protocol: 'instance creation',
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 var $1;
 var $1;
 $1=_st(self._new())._signal_(aString);
 $1=_st(self._new())._signal_(aString);
 return $1;
 return $1;
-}, function($ctx1) {$ctx1.fill(self,"signal:",{aString:aString},globals.Error.klass)})},
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"signal:",{aString:aString},globals.Error.klass)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aString"],
 args: ["aString"],
 source: "signal: aString\x0a\x09^ self new\x0a\x09\x09signal: aString",
 source: "signal: aString\x0a\x09^ self new\x0a\x09\x09signal: aString",
-messageSends: ["signal:", "new"],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["signal:", "new"]
 }),
 }),
 globals.Error.klass);
 globals.Error.klass);
 
 
 
 
 smalltalk.addClass('Halt', globals.Error, [], 'Kernel-Exceptions');
 smalltalk.addClass('Halt', globals.Error, [], 'Kernel-Exceptions');
+//>>excludeStart("ide", pragmas.excludeIdeData);
 globals.Halt.comment="I am provided to support `Object>>#halt`.";
 globals.Halt.comment="I am provided to support `Object>>#halt`.";
+//>>excludeEnd("ide");
 smalltalk.addMethod(
 smalltalk.addMethod(
 smalltalk.method({
 smalltalk.method({
 selector: "messageText",
 selector: "messageText",
@@ -314,11 +450,14 @@ protocol: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 return "Halt encountered";
 return "Halt encountered";
+
 },
 },
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "messageText\x0a\x09^ 'Halt encountered'",
 source: "messageText\x0a\x09^ 'Halt encountered'",
-messageSends: [],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: []
 }),
 }),
 globals.Halt);
 globals.Halt);
 
 
@@ -328,50 +467,88 @@ selector: "signalerContextFrom:",
 protocol: 'accessing',
 protocol: 'accessing',
 fn: function (aContext){
 fn: function (aContext){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 var $4,$3,$2,$1;
 var $4,$3,$2,$1;
 $1=_st(aContext)._findContextSuchThat_((function(context){
 $1=_st(aContext)._findContextSuchThat_((function(context){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx2) {
 return smalltalk.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
 $4=_st(context)._receiver();
 $4=_st(context)._receiver();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["receiver"]=1;
 $ctx2.sendIdx["receiver"]=1;
+//>>excludeEnd("ctx");
 $3=_st($4).__eq_eq(self);
 $3=_st($4).__eq_eq(self);
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["=="]=1;
 $ctx2.sendIdx["=="]=1;
+//>>excludeEnd("ctx");
 $2=_st($3)._or_((function(){
 $2=_st($3)._or_((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx3) {
 return smalltalk.withContext(function($ctx3) {
+//>>excludeEnd("ctx");
 return _st(_st(_st(context)._receiver()).__eq_eq(self._class()))._or_((function(){
 return _st(_st(_st(context)._receiver()).__eq_eq(self._class()))._or_((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx4) {
 return smalltalk.withContext(function($ctx4) {
+//>>excludeEnd("ctx");
 return _st(_st(_st(context)._method())._selector()).__eq("halt");
 return _st(_st(_st(context)._method())._selector()).__eq("halt");
-}, function($ctx4) {$ctx4.fillBlock({},$ctx3,3)})}));
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx4) {$ctx4.fillBlock({},$ctx3,3)});
+//>>excludeEnd("ctx");
+}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
+//>>excludeEnd("ctx");
+}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["or:"]=1;
 $ctx2.sendIdx["or:"]=1;
+//>>excludeEnd("ctx");
 return _st($2)._not();
 return _st($2)._not();
-}, function($ctx2) {$ctx2.fillBlock({context:context},$ctx1,1)})}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({context:context},$ctx1,1)});
+//>>excludeEnd("ctx");
+}));
 return $1;
 return $1;
-}, function($ctx1) {$ctx1.fill(self,"signalerContextFrom:",{aContext:aContext},globals.Halt)})},
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"signalerContextFrom:",{aContext:aContext},globals.Halt)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aContext"],
 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: [ :context |\x0a\x09\x09(context receiver == self \x0a\x09\x09or: [ (context receiver == self class) \x0a\x09\x09or: [ context method selector = #halt ]]) not ]",
 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: [ :context |\x0a\x09\x09(context receiver == self \x0a\x09\x09or: [ (context receiver == self class) \x0a\x09\x09or: [ context method selector = #halt ]]) not ]",
-messageSends: ["findContextSuchThat:", "not", "or:", "==", "receiver", "class", "=", "selector", "method"],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["findContextSuchThat:", "not", "or:", "==", "receiver", "class", "=", "selector", "method"]
 }),
 }),
 globals.Halt);
 globals.Halt);
 
 
 
 
 
 
 smalltalk.addClass('JavaScriptException', globals.Error, ['exception'], 'Kernel-Exceptions');
 smalltalk.addClass('JavaScriptException', globals.Error, ['exception'], 'Kernel-Exceptions');
+//>>excludeStart("ide", pragmas.excludeIdeData);
 globals.JavaScriptException.comment="A JavaScriptException is thrown when a non-Smalltalk exception occurs while in the Smalltalk stack.\x0aSee `boot.js` `inContext()` and `BlockClosure >> on:do:`";
 globals.JavaScriptException.comment="A JavaScriptException is thrown when a non-Smalltalk exception occurs while in the Smalltalk stack.\x0aSee `boot.js` `inContext()` and `BlockClosure >> on:do:`";
+//>>excludeEnd("ide");
 smalltalk.addMethod(
 smalltalk.addMethod(
 smalltalk.method({
 smalltalk.method({
 selector: "context:",
 selector: "context:",
 protocol: 'accessing',
 protocol: 'accessing',
 fn: function (aMethodContext){
 fn: function (aMethodContext){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 self.context = aMethodContext;
 self.context = aMethodContext;
-return self}, function($ctx1) {$ctx1.fill(self,"context:",{aMethodContext:aMethodContext},globals.JavaScriptException)})},
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"context:",{aMethodContext:aMethodContext},globals.JavaScriptException)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aMethodContext"],
 args: ["aMethodContext"],
 source: "context: aMethodContext\x0a\x09\x22Set the context from the outside.\x0a\x09See boot.js `inContext()` exception handling\x22\x0a\x09\x0a\x09<self.context = aMethodContext>",
 source: "context: aMethodContext\x0a\x09\x22Set the context from the outside.\x0a\x09See boot.js `inContext()` exception handling\x22\x0a\x09\x0a\x09<self.context = aMethodContext>",
-messageSends: [],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: []
 }),
 }),
 globals.JavaScriptException);
 globals.JavaScriptException);
 
 
@@ -384,11 +561,14 @@ var self=this;
 var $1;
 var $1;
 $1=self["@exception"];
 $1=self["@exception"];
 return $1;
 return $1;
+
 },
 },
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "exception\x0a\x09^ exception",
 source: "exception\x0a\x09^ exception",
-messageSends: [],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: []
 }),
 }),
 globals.JavaScriptException);
 globals.JavaScriptException);
 
 
@@ -399,11 +579,15 @@ protocol: 'accessing',
 fn: function (anException){
 fn: function (anException){
 var self=this;
 var self=this;
 self["@exception"]=anException;
 self["@exception"]=anException;
-return self},
+return self;
+
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["anException"],
 args: ["anException"],
 source: "exception: anException\x0a\x09exception := anException",
 source: "exception: anException\x0a\x09exception := anException",
-messageSends: [],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: []
 }),
 }),
 globals.JavaScriptException);
 globals.JavaScriptException);
 
 
@@ -413,13 +597,21 @@ selector: "messageText",
 protocol: 'accessing',
 protocol: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 return 'JavaScript exception: ' + self["@exception"].toString();
 return 'JavaScript exception: ' + self["@exception"].toString();
-return self}, function($ctx1) {$ctx1.fill(self,"messageText",{},globals.JavaScriptException)})},
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"messageText",{},globals.JavaScriptException)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "messageText\x0a\x09<return 'JavaScript exception: ' + self[\x22@exception\x22].toString()>",
 source: "messageText\x0a\x09<return 'JavaScript exception: ' + self[\x22@exception\x22].toString()>",
-messageSends: [],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: []
 }),
 }),
 globals.JavaScriptException);
 globals.JavaScriptException);
 
 
@@ -430,18 +622,25 @@ selector: "on:",
 protocol: 'instance creation',
 protocol: 'instance creation',
 fn: function (anException){
 fn: function (anException){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 var $2,$3,$1;
 var $2,$3,$1;
 $2=self._new();
 $2=self._new();
 _st($2)._exception_(anException);
 _st($2)._exception_(anException);
 $3=_st($2)._yourself();
 $3=_st($2)._yourself();
 $1=$3;
 $1=$3;
 return $1;
 return $1;
-}, function($ctx1) {$ctx1.fill(self,"on:",{anException:anException},globals.JavaScriptException.klass)})},
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"on:",{anException:anException},globals.JavaScriptException.klass)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["anException"],
 args: ["anException"],
 source: "on: anException\x0a\x09^ self new\x0a\x09\x09exception: anException;\x0a\x09\x09yourself",
 source: "on: anException\x0a\x09^ self new\x0a\x09\x09exception: anException;\x0a\x09\x09yourself",
-messageSends: ["exception:", "new", "yourself"],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["exception:", "new", "yourself"]
 }),
 }),
 globals.JavaScriptException.klass);
 globals.JavaScriptException.klass);
 
 
@@ -451,7 +650,9 @@ selector: "on:context:",
 protocol: 'instance creation',
 protocol: 'instance creation',
 fn: function (anException,aMethodContext){
 fn: function (anException,aMethodContext){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 var $2,$3,$1;
 var $2,$3,$1;
 $2=self._new();
 $2=self._new();
 _st($2)._exception_(anException);
 _st($2)._exception_(anException);
@@ -459,17 +660,24 @@ _st($2)._context_(aMethodContext);
 $3=_st($2)._yourself();
 $3=_st($2)._yourself();
 $1=$3;
 $1=$3;
 return $1;
 return $1;
-}, function($ctx1) {$ctx1.fill(self,"on:context:",{anException:anException,aMethodContext:aMethodContext},globals.JavaScriptException.klass)})},
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"on:context:",{anException:anException,aMethodContext:aMethodContext},globals.JavaScriptException.klass)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["anException", "aMethodContext"],
 args: ["anException", "aMethodContext"],
 source: "on: anException context: aMethodContext\x0a\x09^ self new\x0a\x09\x09exception: anException;\x0a\x09\x09context: aMethodContext;\x0a\x09\x09yourself",
 source: "on: anException context: aMethodContext\x0a\x09^ self new\x0a\x09\x09exception: anException;\x0a\x09\x09context: aMethodContext;\x0a\x09\x09yourself",
-messageSends: ["exception:", "new", "context:", "yourself"],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["exception:", "new", "context:", "yourself"]
 }),
 }),
 globals.JavaScriptException.klass);
 globals.JavaScriptException.klass);
 
 
 
 
 smalltalk.addClass('MessageNotUnderstood', globals.Error, ['message', 'receiver'], 'Kernel-Exceptions');
 smalltalk.addClass('MessageNotUnderstood', globals.Error, ['message', 'receiver'], 'Kernel-Exceptions');
+//>>excludeStart("ide", pragmas.excludeIdeData);
 globals.MessageNotUnderstood.comment="This exception is provided to support `Object>>doesNotUnderstand:`.";
 globals.MessageNotUnderstood.comment="This exception is provided to support `Object>>doesNotUnderstand:`.";
+//>>excludeEnd("ide");
 smalltalk.addMethod(
 smalltalk.addMethod(
 smalltalk.method({
 smalltalk.method({
 selector: "message",
 selector: "message",
@@ -479,11 +687,14 @@ var self=this;
 var $1;
 var $1;
 $1=self["@message"];
 $1=self["@message"];
 return $1;
 return $1;
+
 },
 },
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "message\x0a\x09^ message",
 source: "message\x0a\x09^ message",
-messageSends: [],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: []
 }),
 }),
 globals.MessageNotUnderstood);
 globals.MessageNotUnderstood);
 
 
@@ -494,11 +705,15 @@ protocol: 'accessing',
 fn: function (aMessage){
 fn: function (aMessage){
 var self=this;
 var self=this;
 self["@message"]=aMessage;
 self["@message"]=aMessage;
-return self},
+return self;
+
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aMessage"],
 args: ["aMessage"],
 source: "message: aMessage\x0a\x09message := aMessage",
 source: "message: aMessage\x0a\x09message := aMessage",
-messageSends: [],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: []
 }),
 }),
 globals.MessageNotUnderstood);
 globals.MessageNotUnderstood);
 
 
@@ -508,16 +723,25 @@ selector: "messageText",
 protocol: 'accessing',
 protocol: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 var $1;
 var $1;
 $1=_st(_st(_st(self._receiver())._asString()).__comma(" does not understand #")).__comma(_st(self._message())._selector());
 $1=_st(_st(_st(self._receiver())._asString()).__comma(" does not understand #")).__comma(_st(self._message())._selector());
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx[","]=1;
 $ctx1.sendIdx[","]=1;
+//>>excludeEnd("ctx");
 return $1;
 return $1;
-}, function($ctx1) {$ctx1.fill(self,"messageText",{},globals.MessageNotUnderstood)})},
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"messageText",{},globals.MessageNotUnderstood)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "messageText\x0a\x09^ self receiver asString, ' does not understand #', self message selector",
 source: "messageText\x0a\x09^ self receiver asString, ' does not understand #', self message selector",
-messageSends: [",", "asString", "receiver", "selector", "message"],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: [",", "asString", "receiver", "selector", "message"]
 }),
 }),
 globals.MessageNotUnderstood);
 globals.MessageNotUnderstood);
 
 
@@ -530,11 +754,14 @@ var self=this;
 var $1;
 var $1;
 $1=self["@receiver"];
 $1=self["@receiver"];
 return $1;
 return $1;
+
 },
 },
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "receiver\x0a\x09^ receiver",
 source: "receiver\x0a\x09^ receiver",
-messageSends: [],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: []
 }),
 }),
 globals.MessageNotUnderstood);
 globals.MessageNotUnderstood);
 
 
@@ -545,18 +772,24 @@ protocol: 'accessing',
 fn: function (anObject){
 fn: function (anObject){
 var self=this;
 var self=this;
 self["@receiver"]=anObject;
 self["@receiver"]=anObject;
-return self},
+return self;
+
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["anObject"],
 args: ["anObject"],
 source: "receiver: anObject\x0a\x09receiver := anObject",
 source: "receiver: anObject\x0a\x09receiver := anObject",
-messageSends: [],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: []
 }),
 }),
 globals.MessageNotUnderstood);
 globals.MessageNotUnderstood);
 
 
 
 
 
 
 smalltalk.addClass('NonBooleanReceiver', globals.Error, ['object'], 'Kernel-Exceptions');
 smalltalk.addClass('NonBooleanReceiver', globals.Error, ['object'], 'Kernel-Exceptions');
+//>>excludeStart("ide", pragmas.excludeIdeData);
 globals.NonBooleanReceiver.comment="NonBooleanReceiver exceptions may be thrown when executing inlined methods such as `#ifTrue:` with a non boolean receiver.";
 globals.NonBooleanReceiver.comment="NonBooleanReceiver exceptions may be thrown when executing inlined methods such as `#ifTrue:` with a non boolean receiver.";
+//>>excludeEnd("ide");
 smalltalk.addMethod(
 smalltalk.addMethod(
 smalltalk.method({
 smalltalk.method({
 selector: "object",
 selector: "object",
@@ -566,11 +799,14 @@ var self=this;
 var $1;
 var $1;
 $1=self["@object"];
 $1=self["@object"];
 return $1;
 return $1;
+
 },
 },
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "object\x0a\x09^ object",
 source: "object\x0a\x09^ object",
-messageSends: [],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: []
 }),
 }),
 globals.NonBooleanReceiver);
 globals.NonBooleanReceiver);
 
 
@@ -581,17 +817,23 @@ protocol: 'accessing',
 fn: function (anObject){
 fn: function (anObject){
 var self=this;
 var self=this;
 self["@object"]=anObject;
 self["@object"]=anObject;
-return self},
+return self;
+
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["anObject"],
 args: ["anObject"],
 source: "object: anObject\x0a\x09object := anObject",
 source: "object: anObject\x0a\x09object := anObject",
-messageSends: [],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: []
 }),
 }),
 globals.NonBooleanReceiver);
 globals.NonBooleanReceiver);
 
 
 
 
 
 
 smalltalk.addClass('PackageCommitError', globals.Error, [], 'Kernel-Exceptions');
 smalltalk.addClass('PackageCommitError', globals.Error, [], 'Kernel-Exceptions');
+//>>excludeStart("ide", pragmas.excludeIdeData);
 globals.PackageCommitError.comment="I get signaled when an attempt to commit a package has failed.";
 globals.PackageCommitError.comment="I get signaled when an attempt to commit a package has failed.";
+//>>excludeEnd("ide");
 
 
 });
 });

File diff suppressed because it is too large
+ 524 - 90
src/Kernel-ImportExport.js


+ 13 - 10
src/Kernel-ImportExport.st

@@ -275,10 +275,14 @@ exportDefinitionOf: aClass on: aStream
 	aClass comment notEmpty ifTrue: [
 	aClass comment notEmpty ifTrue: [
 		aStream
 		aStream
 			lf;
 			lf;
-		nextPutAll: (self jsClassNameFor: aClass);
-		nextPutAll: '.comment=';
-		nextPutAll: aClass comment asJavascript;
-		nextPutAll: ';' ].
+			nextPutAll: '//>>excludeStart("ide", pragmas.excludeIdeData);';
+			lf;
+			nextPutAll: (self jsClassNameFor: aClass);
+			nextPutAll: '.comment=';
+			nextPutAll: aClass comment asJavascript;
+			nextPutAll: ';';
+			lf;
+			nextPutAll: '//>>excludeEnd("ide");' ].
 	aStream lf
 	aStream lf
 !
 !
 
 
@@ -297,17 +301,16 @@ exportMetaDefinitionOf: aClass on: aStream
 exportMethod: aMethod on: aStream
 exportMethod: aMethod on: aStream
 	aStream
 	aStream
 		nextPutAll: 'smalltalk.addMethod(';lf;
 		nextPutAll: 'smalltalk.addMethod(';lf;
-		"nextPutAll: aMethod selector asSelector asJavascript, ',';lf;"
 		nextPutAll: 'smalltalk.method({';lf;
 		nextPutAll: 'smalltalk.method({';lf;
 		nextPutAll: 'selector: ', aMethod selector asJavascript, ',';lf;
 		nextPutAll: 'selector: ', aMethod selector asJavascript, ',';lf;
 		nextPutAll: 'protocol: ''', aMethod protocol, ''',';lf;
 		nextPutAll: 'protocol: ''', aMethod protocol, ''',';lf;
 		nextPutAll: 'fn: ', aMethod fn compiledSource, ',';lf;
 		nextPutAll: 'fn: ', aMethod fn compiledSource, ',';lf;
+		nextPutAll: '//>>excludeStart("ide", pragmas.excludeIdeData);';lf;
 		nextPutAll: 'args: ', aMethod arguments asJavascript, ','; lf;
 		nextPutAll: 'args: ', aMethod arguments asJavascript, ','; lf;
 		nextPutAll: 'source: ', aMethod source asJavascript, ',';lf;
 		nextPutAll: 'source: ', aMethod source asJavascript, ',';lf;
-		nextPutAll: 'messageSends: ', aMethod messageSends asJavascript, ',';lf;
-		nextPutAll: 'referencedClasses: ', aMethod referencedClasses asJavascript.
-	aStream
-		lf;
+		nextPutAll: 'referencedClasses: ', aMethod referencedClasses asJavascript, ',';lf;
+		nextPutAll: '//>>excludeEnd("ide");';lf;
+		nextPutAll: 'messageSends: ', aMethod messageSends asJavascript;lf;
 		nextPutAll: '}),';lf;
 		nextPutAll: '}),';lf;
 		nextPutAll: (self jsClassNameFor: aMethod methodClass);
 		nextPutAll: (self jsClassNameFor: aMethod methodClass);
 		nextPutAll: ');';lf;lf
 		nextPutAll: ');';lf;lf
@@ -697,7 +700,7 @@ load: aPackage
 	Smalltalk amdRequire
 	Smalltalk amdRequire
 		ifNil: [ self error: 'AMD loader not present' ]
 		ifNil: [ self error: 'AMD loader not present' ]
 		ifNotNil: [ :require |
 		ifNotNil: [ :require |
-			require value: (Array new: (self namespaceFor: aPackage), '/', aPackage name ) ]
+			require value: (Array with: (self namespaceFor: aPackage), '/', aPackage name ) ]
 ! !
 ! !
 
 
 !AmdPackageHandler methodsFor: 'private'!
 !AmdPackageHandler methodsFor: 'private'!

File diff suppressed because it is too large
+ 399 - 104
src/Kernel-Infrastructure.js


File diff suppressed because it is too large
+ 411 - 113
src/Kernel-Methods.js


File diff suppressed because it is too large
+ 411 - 109
src/Kernel-Objects.js


File diff suppressed because it is too large
+ 532 - 90
src/Kernel-Tests.js


+ 45 - 15
src/Kernel-Transcript.js

@@ -4,18 +4,24 @@ smalltalk.addPackage('Kernel-Transcript');
 smalltalk.packages["Kernel-Transcript"].transport = {"type":"amd","amdNamespace":"amber_core"};
 smalltalk.packages["Kernel-Transcript"].transport = {"type":"amd","amdNamespace":"amber_core"};
 
 
 smalltalk.addClass('ConsoleTranscript', globals.Object, ['textarea'], 'Kernel-Transcript');
 smalltalk.addClass('ConsoleTranscript', globals.Object, ['textarea'], 'Kernel-Transcript');
+//>>excludeStart("ide", pragmas.excludeIdeData);
 globals.ConsoleTranscript.comment="I am a specific transcript emitting to the JavaScript console.\x0a\x0aIf no other transcript is registered, I am the default.";
 globals.ConsoleTranscript.comment="I am a specific transcript emitting to the JavaScript console.\x0a\x0aIf no other transcript is registered, I am the default.";
+//>>excludeEnd("ide");
 smalltalk.addMethod(
 smalltalk.addMethod(
 smalltalk.method({
 smalltalk.method({
 selector: "clear",
 selector: "clear",
 protocol: 'printing',
 protocol: 'printing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return self},
+return self;
+
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "clear\x0a\x09\x22no op\x22",
 source: "clear\x0a\x09\x22no op\x22",
-messageSends: [],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: []
 }),
 }),
 globals.ConsoleTranscript);
 globals.ConsoleTranscript);
 
 
@@ -25,11 +31,15 @@ selector: "cr",
 protocol: 'printing',
 protocol: 'printing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return self},
+return self;
+
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "cr\x0a\x09\x22no op\x22",
 source: "cr\x0a\x09\x22no op\x22",
-messageSends: [],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: []
 }),
 }),
 globals.ConsoleTranscript);
 globals.ConsoleTranscript);
 
 
@@ -39,11 +49,15 @@ selector: "open",
 protocol: 'actions',
 protocol: 'actions',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return self},
+return self;
+
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "open",
 source: "open",
-messageSends: [],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: []
 }),
 }),
 globals.ConsoleTranscript);
 globals.ConsoleTranscript);
 
 
@@ -53,13 +67,21 @@ selector: "show:",
 protocol: 'printing',
 protocol: 'printing',
 fn: function (anObject){
 fn: function (anObject){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 console.log(String(_st(anObject)._asString()));
 console.log(String(_st(anObject)._asString()));
-return self}, function($ctx1) {$ctx1.fill(self,"show:",{anObject:anObject},globals.ConsoleTranscript)})},
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"show:",{anObject:anObject},globals.ConsoleTranscript)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["anObject"],
 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<console.log(String(_st(anObject)._asString()))>",
 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<console.log(String(_st(anObject)._asString()))>",
-messageSends: [],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: []
 }),
 }),
 globals.ConsoleTranscript);
 globals.ConsoleTranscript);
 
 
@@ -71,13 +93,21 @@ protocol: 'initialization',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 function $Transcript(){return globals.Transcript||(typeof Transcript=="undefined"?nil:Transcript)}
 function $Transcript(){return globals.Transcript||(typeof Transcript=="undefined"?nil:Transcript)}
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 _st($Transcript())._registerIfNone_(self._new());
 _st($Transcript())._registerIfNone_(self._new());
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},globals.ConsoleTranscript.klass)})},
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"initialize",{},globals.ConsoleTranscript.klass)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "initialize\x0a\x09Transcript registerIfNone: self new",
 source: "initialize\x0a\x09Transcript registerIfNone: self new",
-messageSends: ["registerIfNone:", "new"],
-referencedClasses: ["Transcript"]
+referencedClasses: ["Transcript"],
+//>>excludeEnd("ide");
+messageSends: ["registerIfNone:", "new"]
 }),
 }),
 globals.ConsoleTranscript.klass);
 globals.ConsoleTranscript.klass);
 
 

+ 458 - 93
src/SUnit-Tests.js

@@ -4,7 +4,9 @@ smalltalk.addPackage('SUnit-Tests');
 smalltalk.packages["SUnit-Tests"].transport = {"type":"amd","amdNamespace":"amber_core"};
 smalltalk.packages["SUnit-Tests"].transport = {"type":"amd","amdNamespace":"amber_core"};
 
 
 smalltalk.addClass('ExampleSetTest', globals.TestCase, ['empty', 'full'], 'SUnit-Tests');
 smalltalk.addClass('ExampleSetTest', globals.TestCase, ['empty', 'full'], 'SUnit-Tests');
+//>>excludeStart("ide", pragmas.excludeIdeData);
 globals.ExampleSetTest.comment="ExampleSetTest is taken from Pharo 1.4.\x0a\x0aTHe purpose of this class is to demonstrate a simple use case of the test framework.";
 globals.ExampleSetTest.comment="ExampleSetTest is taken from Pharo 1.4.\x0a\x0aTHe purpose of this class is to demonstrate a simple use case of the test framework.";
+//>>excludeEnd("ide");
 smalltalk.addMethod(
 smalltalk.addMethod(
 smalltalk.method({
 smalltalk.method({
 selector: "setUp",
 selector: "setUp",
@@ -12,14 +14,22 @@ protocol: 'running',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 function $Set(){return globals.Set||(typeof Set=="undefined"?nil:Set)}
 function $Set(){return globals.Set||(typeof Set=="undefined"?nil:Set)}
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 self["@empty"]=_st($Set())._new();
 self["@empty"]=_st($Set())._new();
 self["@full"]=_st($Set())._with_with_((5),"abc");
 self["@full"]=_st($Set())._with_with_((5),"abc");
-return self}, function($ctx1) {$ctx1.fill(self,"setUp",{},globals.ExampleSetTest)})},
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"setUp",{},globals.ExampleSetTest)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "setUp\x0a\x09empty := Set new.\x0a\x09full := Set with: 5 with: #abc",
 source: "setUp\x0a\x09empty := Set new.\x0a\x09full := Set with: 5 with: #abc",
-messageSends: ["new", "with:with:"],
-referencedClasses: ["Set"]
+referencedClasses: ["Set"],
+//>>excludeEnd("ide");
+messageSends: ["new", "with:with:"]
 }),
 }),
 globals.ExampleSetTest);
 globals.ExampleSetTest);
 
 
@@ -29,14 +39,22 @@ selector: "testAdd",
 protocol: 'tests',
 protocol: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 _st(self["@empty"])._add_((5));
 _st(self["@empty"])._add_((5));
 self._assert_(_st(self["@empty"])._includes_((5)));
 self._assert_(_st(self["@empty"])._includes_((5)));
-return self}, function($ctx1) {$ctx1.fill(self,"testAdd",{},globals.ExampleSetTest)})},
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"testAdd",{},globals.ExampleSetTest)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "testAdd\x0a\x09empty add: 5.\x0a\x09self assert: (empty includes: 5)",
 source: "testAdd\x0a\x09empty add: 5.\x0a\x09self assert: (empty includes: 5)",
-messageSends: ["add:", "assert:", "includes:"],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["add:", "assert:", "includes:"]
 }),
 }),
 globals.ExampleSetTest);
 globals.ExampleSetTest);
 
 
@@ -46,14 +64,22 @@ selector: "testGrow",
 protocol: 'tests',
 protocol: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 _st(self["@empty"])._addAll_((1)._to_((100)));
 _st(self["@empty"])._addAll_((1)._to_((100)));
 self._assert_equals_(_st(self["@empty"])._size(),(100));
 self._assert_equals_(_st(self["@empty"])._size(),(100));
-return self}, function($ctx1) {$ctx1.fill(self,"testGrow",{},globals.ExampleSetTest)})},
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"testGrow",{},globals.ExampleSetTest)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "testGrow\x0a\x09empty addAll: (1 to: 100).\x0a\x09self assert: empty size equals: 100",
 source: "testGrow\x0a\x09empty addAll: (1 to: 100).\x0a\x09self assert: empty size equals: 100",
-messageSends: ["addAll:", "to:", "assert:equals:", "size"],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["addAll:", "to:", "assert:equals:", "size"]
 }),
 }),
 globals.ExampleSetTest);
 globals.ExampleSetTest);
 
 
@@ -64,21 +90,41 @@ protocol: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 function $Error(){return globals.Error||(typeof Error=="undefined"?nil:Error)}
 function $Error(){return globals.Error||(typeof Error=="undefined"?nil:Error)}
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 self._should_raise_((function(){
 self._should_raise_((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx2) {
 return smalltalk.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
 return _st(self["@empty"])._at_((5));
 return _st(self["@empty"])._at_((5));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),$Error());
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
+//>>excludeEnd("ctx");
+}),$Error());
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["should:raise:"]=1;
 $ctx1.sendIdx["should:raise:"]=1;
+//>>excludeEnd("ctx");
 self._should_raise_((function(){
 self._should_raise_((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx2) {
 return smalltalk.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
 return _st(self["@empty"])._at_put_((5),"abc");
 return _st(self["@empty"])._at_put_((5),"abc");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}),$Error());
-return self}, function($ctx1) {$ctx1.fill(self,"testIllegal",{},globals.ExampleSetTest)})},
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
+//>>excludeEnd("ctx");
+}),$Error());
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"testIllegal",{},globals.ExampleSetTest)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 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",
 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",
-messageSends: ["should:raise:", "at:", "at:put:"],
-referencedClasses: ["Error"]
+referencedClasses: ["Error"],
+//>>excludeEnd("ide");
+messageSends: ["should:raise:", "at:", "at:put:"]
 }),
 }),
 globals.ExampleSetTest);
 globals.ExampleSetTest);
 
 
@@ -88,18 +134,30 @@ selector: "testIncludes",
 protocol: 'tests',
 protocol: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 var $1;
 var $1;
 $1=_st(self["@full"])._includes_((5));
 $1=_st(self["@full"])._includes_((5));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["includes:"]=1;
 $ctx1.sendIdx["includes:"]=1;
+//>>excludeEnd("ctx");
 self._assert_($1);
 self._assert_($1);
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["assert:"]=1;
 $ctx1.sendIdx["assert:"]=1;
+//>>excludeEnd("ctx");
 self._assert_(_st(self["@full"])._includes_("abc"));
 self._assert_(_st(self["@full"])._includes_("abc"));
-return self}, function($ctx1) {$ctx1.fill(self,"testIncludes",{},globals.ExampleSetTest)})},
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"testIncludes",{},globals.ExampleSetTest)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "testIncludes\x0a\x09self assert: (full includes: 5).\x0a\x09self assert: (full includes: #abc)",
 source: "testIncludes\x0a\x09self assert: (full includes: 5).\x0a\x09self assert: (full includes: #abc)",
-messageSends: ["assert:", "includes:"],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["assert:", "includes:"]
 }),
 }),
 globals.ExampleSetTest);
 globals.ExampleSetTest);
 
 
@@ -109,23 +167,39 @@ selector: "testOccurrences",
 protocol: 'tests',
 protocol: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 var $1,$2;
 var $1,$2;
 $1=_st(self["@empty"])._occurrencesOf_((0));
 $1=_st(self["@empty"])._occurrencesOf_((0));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["occurrencesOf:"]=1;
 $ctx1.sendIdx["occurrencesOf:"]=1;
+//>>excludeEnd("ctx");
 self._assert_equals_($1,(0));
 self._assert_equals_($1,(0));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["assert:equals:"]=1;
 $ctx1.sendIdx["assert:equals:"]=1;
+//>>excludeEnd("ctx");
 $2=_st(self["@full"])._occurrencesOf_((5));
 $2=_st(self["@full"])._occurrencesOf_((5));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["occurrencesOf:"]=2;
 $ctx1.sendIdx["occurrencesOf:"]=2;
+//>>excludeEnd("ctx");
 self._assert_equals_($2,(1));
 self._assert_equals_($2,(1));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["assert:equals:"]=2;
 $ctx1.sendIdx["assert:equals:"]=2;
+//>>excludeEnd("ctx");
 _st(self["@full"])._add_((5));
 _st(self["@full"])._add_((5));
 self._assert_equals_(_st(self["@full"])._occurrencesOf_((5)),(1));
 self._assert_equals_(_st(self["@full"])._occurrencesOf_((5)),(1));
-return self}, function($ctx1) {$ctx1.fill(self,"testOccurrences",{},globals.ExampleSetTest)})},
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"testOccurrences",{},globals.ExampleSetTest)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 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",
 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",
-messageSends: ["assert:equals:", "occurrencesOf:", "add:"],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["assert:equals:", "occurrencesOf:", "add:"]
 }),
 }),
 globals.ExampleSetTest);
 globals.ExampleSetTest);
 
 
@@ -135,18 +209,28 @@ selector: "testRemove",
 protocol: 'tests',
 protocol: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 var $1;
 var $1;
 _st(self["@full"])._remove_((5));
 _st(self["@full"])._remove_((5));
 $1=_st(self["@full"])._includes_("abc");
 $1=_st(self["@full"])._includes_("abc");
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["includes:"]=1;
 $ctx1.sendIdx["includes:"]=1;
+//>>excludeEnd("ctx");
 self._assert_($1);
 self._assert_($1);
 self._deny_(_st(self["@full"])._includes_((5)));
 self._deny_(_st(self["@full"])._includes_((5)));
-return self}, function($ctx1) {$ctx1.fill(self,"testRemove",{},globals.ExampleSetTest)})},
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"testRemove",{},globals.ExampleSetTest)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "testRemove\x0a\x09full remove: 5.\x0a\x09self assert: (full includes: #abc).\x0a\x09self deny: (full includes: 5)",
 source: "testRemove\x0a\x09full remove: 5.\x0a\x09self assert: (full includes: #abc).\x0a\x09self deny: (full includes: 5)",
-messageSends: ["remove:", "assert:", "includes:", "deny:"],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["remove:", "assert:", "includes:", "deny:"]
 }),
 }),
 globals.ExampleSetTest);
 globals.ExampleSetTest);
 
 
@@ -159,20 +243,33 @@ selector: "fakeError",
 protocol: 'helpers',
 protocol: 'helpers',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 self["@flag"]="bad";
 self["@flag"]="bad";
 self._timeout_((30));
 self._timeout_((30));
 self["@flag"]=_st(self._async_((function(){
 self["@flag"]=_st(self._async_((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx2) {
 return smalltalk.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
 self["@flag"]="ok";
 self["@flag"]="ok";
 self["@flag"];
 self["@flag"];
 return self._error_("Intentional");
 return self._error_("Intentional");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})})))._valueWithTimeout_((20));
-return self}, function($ctx1) {$ctx1.fill(self,"fakeError",{},globals.SUnitAsyncTest)})},
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
+//>>excludeEnd("ctx");
+})))._valueWithTimeout_((20));
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"fakeError",{},globals.SUnitAsyncTest)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "fakeError\x0a\x09flag := 'bad'.\x0a\x09self timeout: 30.\x0a\x09flag := (self async: [ flag := 'ok'. self error: 'Intentional' ]) valueWithTimeout: 20",
 source: "fakeError\x0a\x09flag := 'bad'.\x0a\x09self timeout: 30.\x0a\x09flag := (self async: [ flag := 'ok'. self error: 'Intentional' ]) valueWithTimeout: 20",
-messageSends: ["timeout:", "valueWithTimeout:", "async:", "error:"],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["timeout:", "valueWithTimeout:", "async:", "error:"]
 }),
 }),
 globals.SUnitAsyncTest);
 globals.SUnitAsyncTest);
 
 
@@ -182,18 +279,31 @@ selector: "fakeErrorFailingInTearDown",
 protocol: 'helpers',
 protocol: 'helpers',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 self["@flag"]="bad";
 self["@flag"]="bad";
 self._timeout_((30));
 self._timeout_((30));
 self["@flag"]=_st(self._async_((function(){
 self["@flag"]=_st(self._async_((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx2) {
 return smalltalk.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
 return self._error_("Intentional");
 return self._error_("Intentional");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})})))._valueWithTimeout_((20));
-return self}, function($ctx1) {$ctx1.fill(self,"fakeErrorFailingInTearDown",{},globals.SUnitAsyncTest)})},
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
+//>>excludeEnd("ctx");
+})))._valueWithTimeout_((20));
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"fakeErrorFailingInTearDown",{},globals.SUnitAsyncTest)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "fakeErrorFailingInTearDown\x0a\x09flag := 'bad'.\x0a\x09self timeout: 30.\x0a\x09flag := (self async: [ self error: 'Intentional' ]) valueWithTimeout: 20",
 source: "fakeErrorFailingInTearDown\x0a\x09flag := 'bad'.\x0a\x09self timeout: 30.\x0a\x09flag := (self async: [ self error: 'Intentional' ]) valueWithTimeout: 20",
-messageSends: ["timeout:", "valueWithTimeout:", "async:", "error:"],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["timeout:", "valueWithTimeout:", "async:", "error:"]
 }),
 }),
 globals.SUnitAsyncTest);
 globals.SUnitAsyncTest);
 
 
@@ -203,20 +313,33 @@ selector: "fakeFailure",
 protocol: 'helpers',
 protocol: 'helpers',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 self["@flag"]="bad";
 self["@flag"]="bad";
 self._timeout_((30));
 self._timeout_((30));
 self["@flag"]=_st(self._async_((function(){
 self["@flag"]=_st(self._async_((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx2) {
 return smalltalk.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
 self["@flag"]="ok";
 self["@flag"]="ok";
 self["@flag"];
 self["@flag"];
 return self._assert_(false);
 return self._assert_(false);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})})))._valueWithTimeout_((20));
-return self}, function($ctx1) {$ctx1.fill(self,"fakeFailure",{},globals.SUnitAsyncTest)})},
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
+//>>excludeEnd("ctx");
+})))._valueWithTimeout_((20));
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"fakeFailure",{},globals.SUnitAsyncTest)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "fakeFailure\x0a\x09flag := 'bad'.\x0a\x09self timeout: 30.\x0a\x09flag := (self async: [ flag := 'ok'. self assert: false ]) valueWithTimeout: 20",
 source: "fakeFailure\x0a\x09flag := 'bad'.\x0a\x09self timeout: 30.\x0a\x09flag := (self async: [ flag := 'ok'. self assert: false ]) valueWithTimeout: 20",
-messageSends: ["timeout:", "valueWithTimeout:", "async:", "assert:"],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["timeout:", "valueWithTimeout:", "async:", "assert:"]
 }),
 }),
 globals.SUnitAsyncTest);
 globals.SUnitAsyncTest);
 
 
@@ -226,26 +349,50 @@ selector: "fakeMultipleTimeoutFailing",
 protocol: 'helpers',
 protocol: 'helpers',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 var $1;
 var $1;
 self._timeout_((100));
 self._timeout_((100));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["timeout:"]=1;
 $ctx1.sendIdx["timeout:"]=1;
+//>>excludeEnd("ctx");
 $1=self._async_((function(){
 $1=self._async_((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx2) {
 return smalltalk.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
 self._timeout_((20));
 self._timeout_((20));
 return _st(self._async_((function(){
 return _st(self._async_((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx3) {
 return smalltalk.withContext(function($ctx3) {
+//>>excludeEnd("ctx");
 return self._finished();
 return self._finished();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})})))._valueWithTimeout_((30));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
+//>>excludeEnd("ctx");
+})))._valueWithTimeout_((30));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
+//>>excludeEnd("ctx");
+}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["async:"]=1;
 $ctx1.sendIdx["async:"]=1;
+//>>excludeEnd("ctx");
 _st($1)._valueWithTimeout_((20));
 _st($1)._valueWithTimeout_((20));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["valueWithTimeout:"]=1;
 $ctx1.sendIdx["valueWithTimeout:"]=1;
-return self}, function($ctx1) {$ctx1.fill(self,"fakeMultipleTimeoutFailing",{},globals.SUnitAsyncTest)})},
+//>>excludeEnd("ctx");
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"fakeMultipleTimeoutFailing",{},globals.SUnitAsyncTest)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 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",
 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",
-messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished"],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished"]
 }),
 }),
 globals.SUnitAsyncTest);
 globals.SUnitAsyncTest);
 
 
@@ -255,26 +402,50 @@ selector: "fakeMultipleTimeoutPassing",
 protocol: 'helpers',
 protocol: 'helpers',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 var $1;
 var $1;
 self._timeout_((20));
 self._timeout_((20));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["timeout:"]=1;
 $ctx1.sendIdx["timeout:"]=1;
+//>>excludeEnd("ctx");
 $1=self._async_((function(){
 $1=self._async_((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx2) {
 return smalltalk.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
 self._timeout_((40));
 self._timeout_((40));
 return _st(self._async_((function(){
 return _st(self._async_((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx3) {
 return smalltalk.withContext(function($ctx3) {
+//>>excludeEnd("ctx");
 return self._finished();
 return self._finished();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})})))._valueWithTimeout_((20));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
+//>>excludeEnd("ctx");
+})))._valueWithTimeout_((20));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
+//>>excludeEnd("ctx");
+}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["async:"]=1;
 $ctx1.sendIdx["async:"]=1;
+//>>excludeEnd("ctx");
 _st($1)._valueWithTimeout_((10));
 _st($1)._valueWithTimeout_((10));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["valueWithTimeout:"]=1;
 $ctx1.sendIdx["valueWithTimeout:"]=1;
-return self}, function($ctx1) {$ctx1.fill(self,"fakeMultipleTimeoutPassing",{},globals.SUnitAsyncTest)})},
+//>>excludeEnd("ctx");
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"fakeMultipleTimeoutPassing",{},globals.SUnitAsyncTest)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 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",
 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",
-messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished"],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished"]
 }),
 }),
 globals.SUnitAsyncTest);
 globals.SUnitAsyncTest);
 
 
@@ -284,17 +455,30 @@ selector: "fakeTimeout",
 protocol: 'helpers',
 protocol: 'helpers',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 self._timeout_((10));
 self._timeout_((10));
 _st(self._async_((function(){
 _st(self._async_((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx2) {
 return smalltalk.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
 return self._finished();
 return self._finished();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})})))._valueWithTimeout_((20));
-return self}, function($ctx1) {$ctx1.fill(self,"fakeTimeout",{},globals.SUnitAsyncTest)})},
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
+//>>excludeEnd("ctx");
+})))._valueWithTimeout_((20));
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"fakeTimeout",{},globals.SUnitAsyncTest)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "fakeTimeout\x0a\x09self timeout: 10.\x0a\x09(self async: [ self finished ]) valueWithTimeout: 20",
 source: "fakeTimeout\x0a\x09self timeout: 10.\x0a\x09(self async: [ self finished ]) valueWithTimeout: 20",
-messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished"],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished"]
 }),
 }),
 globals.SUnitAsyncTest);
 globals.SUnitAsyncTest);
 
 
@@ -304,18 +488,30 @@ selector: "selectorSetOf:",
 protocol: 'private',
 protocol: 'private',
 fn: function (aCollection){
 fn: function (aCollection){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 var $1;
 var $1;
 $1=_st(_st(aCollection)._collect_((function(each){
 $1=_st(_st(aCollection)._collect_((function(each){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx2) {
 return smalltalk.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
 return _st(each)._selector();
 return _st(each)._selector();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})})))._asSet();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
+//>>excludeEnd("ctx");
+})))._asSet();
 return $1;
 return $1;
-}, function($ctx1) {$ctx1.fill(self,"selectorSetOf:",{aCollection:aCollection},globals.SUnitAsyncTest)})},
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"selectorSetOf:",{aCollection:aCollection},globals.SUnitAsyncTest)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aCollection"],
 args: ["aCollection"],
 source: "selectorSetOf: aCollection\x0a\x09^ (aCollection collect: [ :each | each selector ]) asSet",
 source: "selectorSetOf: aCollection\x0a\x09^ (aCollection collect: [ :each | each selector ]) asSet",
-messageSends: ["asSet", "collect:", "selector"],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["asSet", "collect:", "selector"]
 }),
 }),
 globals.SUnitAsyncTest);
 globals.SUnitAsyncTest);
 
 
@@ -326,11 +522,15 @@ protocol: 'running',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 self["@flag"]="ok";
 self["@flag"]="ok";
-return self},
+return self;
+
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "setUp\x0a\x09flag := 'ok'",
 source: "setUp\x0a\x09flag := 'ok'",
-messageSends: [],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: []
 }),
 }),
 globals.SUnitAsyncTest);
 globals.SUnitAsyncTest);
 
 
@@ -340,13 +540,21 @@ selector: "tearDown",
 protocol: 'running',
 protocol: 'running',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 self._assert_equals_("ok",self["@flag"]);
 self._assert_equals_("ok",self["@flag"]);
-return self}, function($ctx1) {$ctx1.fill(self,"tearDown",{},globals.SUnitAsyncTest)})},
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"tearDown",{},globals.SUnitAsyncTest)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "tearDown\x0a\x09self assert: 'ok' equals: flag",
 source: "tearDown\x0a\x09self assert: 'ok' equals: flag",
-messageSends: ["assert:equals:"],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["assert:equals:"]
 }),
 }),
 globals.SUnitAsyncTest);
 globals.SUnitAsyncTest);
 
 
@@ -359,41 +567,72 @@ var self=this;
 var suite,runner,result,assertBlock;
 var suite,runner,result,assertBlock;
 function $TestSuiteRunner(){return globals.TestSuiteRunner||(typeof TestSuiteRunner=="undefined"?nil:TestSuiteRunner)}
 function $TestSuiteRunner(){return globals.TestSuiteRunner||(typeof TestSuiteRunner=="undefined"?nil:TestSuiteRunner)}
 function $ResultAnnouncement(){return globals.ResultAnnouncement||(typeof ResultAnnouncement=="undefined"?nil:ResultAnnouncement)}
 function $ResultAnnouncement(){return globals.ResultAnnouncement||(typeof ResultAnnouncement=="undefined"?nil:ResultAnnouncement)}
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 var $1,$2,$3,$4;
 var $1,$2,$3,$4;
 suite=["fakeError", "fakeErrorFailingInTearDown", "fakeFailure", "testPass"]._collect_((function(each){
 suite=["fakeError", "fakeErrorFailingInTearDown", "fakeFailure", "testPass"]._collect_((function(each){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx2) {
 return smalltalk.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
 return _st(self._class())._selector_(each);
 return _st(self._class())._selector_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
+//>>excludeEnd("ctx");
+}));
 runner=_st($TestSuiteRunner())._on_(suite);
 runner=_st($TestSuiteRunner())._on_(suite);
 self._timeout_((200));
 self._timeout_((200));
 result=_st(runner)._result();
 result=_st(runner)._result();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["result"]=1;
 $ctx1.sendIdx["result"]=1;
+//>>excludeEnd("ctx");
 assertBlock=self._async_((function(){
 assertBlock=self._async_((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx2) {
 return smalltalk.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
 $1=self._selectorSetOf_(_st(result)._errors());
 $1=self._selectorSetOf_(_st(result)._errors());
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["selectorSetOf:"]=1;
 $ctx2.sendIdx["selectorSetOf:"]=1;
+//>>excludeEnd("ctx");
 $2=["fakeError"]._asSet();
 $2=["fakeError"]._asSet();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["asSet"]=1;
 $ctx2.sendIdx["asSet"]=1;
+//>>excludeEnd("ctx");
 self._assert_equals_($1,$2);
 self._assert_equals_($1,$2);
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["assert:equals:"]=1;
 $ctx2.sendIdx["assert:equals:"]=1;
+//>>excludeEnd("ctx");
 self._assert_equals_(self._selectorSetOf_(_st(result)._failures()),["fakeErrorFailingInTearDown", "fakeFailure"]._asSet());
 self._assert_equals_(self._selectorSetOf_(_st(result)._failures()),["fakeErrorFailingInTearDown", "fakeFailure"]._asSet());
 return self._finished();
 return self._finished();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
+//>>excludeEnd("ctx");
+}));
 _st(_st(runner)._announcer())._on_do_($ResultAnnouncement(),(function(ann){
 _st(_st(runner)._announcer())._on_do_($ResultAnnouncement(),(function(ann){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx2) {
 return smalltalk.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
 $3=_st(_st(ann)._result()).__eq_eq(result);
 $3=_st(_st(ann)._result()).__eq_eq(result);
 if(smalltalk.assert($3)){
 if(smalltalk.assert($3)){
 $4=_st(_st(result)._runs()).__eq(_st(result)._total());
 $4=_st(_st(result)._runs()).__eq(_st(result)._total());
 return _st($4)._ifTrue_(assertBlock);
 return _st($4)._ifTrue_(assertBlock);
 };
 };
-}, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1,3)})}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1,3)});
+//>>excludeEnd("ctx");
+}));
 _st(runner)._run();
 _st(runner)._run();
-return self}, function($ctx1) {$ctx1.fill(self,"testAsyncErrorsAndFailures",{suite:suite,runner:runner,result:result,assertBlock:assertBlock},globals.SUnitAsyncTest)})},
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"testAsyncErrorsAndFailures",{suite:suite,runner:runner,result:result,assertBlock:assertBlock},globals.SUnitAsyncTest)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 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",
 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",
-messageSends: ["collect:", "selector:", "class", "on:", "timeout:", "result", "async:", "assert:equals:", "selectorSetOf:", "errors", "asSet", "failures", "finished", "on:do:", "announcer", "ifTrue:", "==", "=", "runs", "total", "run"],
-referencedClasses: ["TestSuiteRunner", "ResultAnnouncement"]
+referencedClasses: ["TestSuiteRunner", "ResultAnnouncement"],
+//>>excludeEnd("ide");
+messageSends: ["collect:", "selector:", "class", "on:", "timeout:", "result", "async:", "assert:equals:", "selectorSetOf:", "errors", "asSet", "failures", "finished", "on:do:", "announcer", "ifTrue:", "==", "=", "runs", "total", "run"]
 }),
 }),
 globals.SUnitAsyncTest);
 globals.SUnitAsyncTest);
 
 
@@ -404,25 +643,47 @@ protocol: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 function $Error(){return globals.Error||(typeof Error=="undefined"?nil:Error)}
 function $Error(){return globals.Error||(typeof Error=="undefined"?nil:Error)}
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 self._should_raise_((function(){
 self._should_raise_((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx2) {
 return smalltalk.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
 return self._async_((function(){
 return self._async_((function(){
+
 }));
 }));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["async:"]=1;
 $ctx2.sendIdx["async:"]=1;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),$Error());
+//>>excludeEnd("ctx");
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
+//>>excludeEnd("ctx");
+}),$Error());
 self._timeout_((0));
 self._timeout_((0));
 self._shouldnt_raise_((function(){
 self._shouldnt_raise_((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx2) {
 return smalltalk.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
 return self._async_((function(){
 return self._async_((function(){
+
 }));
 }));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}),$Error());
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
+//>>excludeEnd("ctx");
+}),$Error());
 self._finished();
 self._finished();
-return self}, function($ctx1) {$ctx1.fill(self,"testAsyncNeedsTimeout",{},globals.SUnitAsyncTest)})},
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"testAsyncNeedsTimeout",{},globals.SUnitAsyncTest)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "testAsyncNeedsTimeout\x0a\x09self should: [ self async: [ ] ] raise: Error.\x0a\x09self timeout: 0.\x0a\x09self shouldnt: [ self async: [ ] ] raise: Error.\x0a\x09self finished",
 source: "testAsyncNeedsTimeout\x0a\x09self should: [ self async: [ ] ] raise: Error.\x0a\x09self timeout: 0.\x0a\x09self shouldnt: [ self async: [ ] ] raise: Error.\x0a\x09self finished",
-messageSends: ["should:raise:", "async:", "timeout:", "shouldnt:raise:", "finished"],
-referencedClasses: ["Error"]
+referencedClasses: ["Error"],
+//>>excludeEnd("ide");
+messageSends: ["should:raise:", "async:", "timeout:", "shouldnt:raise:", "finished"]
 }),
 }),
 globals.SUnitAsyncTest);
 globals.SUnitAsyncTest);
 
 
@@ -433,22 +694,42 @@ protocol: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 function $Error(){return globals.Error||(typeof Error=="undefined"?nil:Error)}
 function $Error(){return globals.Error||(typeof Error=="undefined"?nil:Error)}
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 self._should_raise_((function(){
 self._should_raise_((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx2) {
 return smalltalk.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
 return self._finished();
 return self._finished();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["finished"]=1;
 $ctx2.sendIdx["finished"]=1;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),$Error());
+//>>excludeEnd("ctx");
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
+//>>excludeEnd("ctx");
+}),$Error());
 self._timeout_((0));
 self._timeout_((0));
 self._shouldnt_raise_((function(){
 self._shouldnt_raise_((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx2) {
 return smalltalk.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
 return self._finished();
 return self._finished();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}),$Error());
-return self}, function($ctx1) {$ctx1.fill(self,"testFinishedNeedsTimeout",{},globals.SUnitAsyncTest)})},
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
+//>>excludeEnd("ctx");
+}),$Error());
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"testFinishedNeedsTimeout",{},globals.SUnitAsyncTest)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "testFinishedNeedsTimeout\x0a\x09self should: [ self finished ] raise: Error.\x0a\x09self timeout: 0.\x0a\x09self shouldnt: [ self finished ] raise: Error.",
 source: "testFinishedNeedsTimeout\x0a\x09self should: [ self finished ] raise: Error.\x0a\x09self timeout: 0.\x0a\x09self shouldnt: [ self finished ] raise: Error.",
-messageSends: ["should:raise:", "finished", "timeout:", "shouldnt:raise:"],
-referencedClasses: ["Error"]
+referencedClasses: ["Error"],
+//>>excludeEnd("ide");
+messageSends: ["should:raise:", "finished", "timeout:", "shouldnt:raise:"]
 }),
 }),
 globals.SUnitAsyncTest);
 globals.SUnitAsyncTest);
 
 
@@ -458,23 +739,37 @@ selector: "testIsAsyncReturnsCorrectValues",
 protocol: 'tests',
 protocol: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 var $1,$2;
 var $1,$2;
 $1=self._isAsync();
 $1=self._isAsync();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["isAsync"]=1;
 $ctx1.sendIdx["isAsync"]=1;
+//>>excludeEnd("ctx");
 self._deny_($1);
 self._deny_($1);
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["deny:"]=1;
 $ctx1.sendIdx["deny:"]=1;
+//>>excludeEnd("ctx");
 self._timeout_((0));
 self._timeout_((0));
 $2=self._isAsync();
 $2=self._isAsync();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["isAsync"]=2;
 $ctx1.sendIdx["isAsync"]=2;
+//>>excludeEnd("ctx");
 self._assert_($2);
 self._assert_($2);
 self._finished();
 self._finished();
 self._deny_(self._isAsync());
 self._deny_(self._isAsync());
-return self}, function($ctx1) {$ctx1.fill(self,"testIsAsyncReturnsCorrectValues",{},globals.SUnitAsyncTest)})},
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"testIsAsyncReturnsCorrectValues",{},globals.SUnitAsyncTest)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 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",
 source: "testIsAsyncReturnsCorrectValues\x0a\x09self deny: self isAsync.\x0a\x09self timeout: 0.\x0a\x09self assert: self isAsync.\x0a\x09self finished.\x0a\x09self deny: self isAsync",
-messageSends: ["deny:", "isAsync", "timeout:", "assert:", "finished"],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["deny:", "isAsync", "timeout:", "assert:", "finished"]
 }),
 }),
 globals.SUnitAsyncTest);
 globals.SUnitAsyncTest);
 
 
@@ -484,21 +779,34 @@ selector: "testPass",
 protocol: 'tests',
 protocol: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 self["@flag"]="bad";
 self["@flag"]="bad";
 self._timeout_((10));
 self._timeout_((10));
 self["@flag"]=_st(self._async_((function(){
 self["@flag"]=_st(self._async_((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx2) {
 return smalltalk.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
 self._assert_(true);
 self._assert_(true);
 self._finished();
 self._finished();
 self["@flag"]="ok";
 self["@flag"]="ok";
 return self["@flag"];
 return self["@flag"];
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})})))._valueWithTimeout_((5));
-return self}, function($ctx1) {$ctx1.fill(self,"testPass",{},globals.SUnitAsyncTest)})},
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
+//>>excludeEnd("ctx");
+})))._valueWithTimeout_((5));
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"testPass",{},globals.SUnitAsyncTest)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 args: [],
 source: "testPass\x0a\x09flag := 'bad'.\x0a\x09self timeout: 10.\x0a\x09flag := (self async: [ self assert: true. self finished. flag := 'ok' ]) valueWithTimeout: 5",
 source: "testPass\x0a\x09flag := 'bad'.\x0a\x09self timeout: 10.\x0a\x09flag := (self async: [ self assert: true. self finished. flag := 'ok' ]) valueWithTimeout: 5",
-messageSends: ["timeout:", "valueWithTimeout:", "async:", "assert:", "finished"],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["timeout:", "valueWithTimeout:", "async:", "assert:", "finished"]
 }),
 }),
 globals.SUnitAsyncTest);
 globals.SUnitAsyncTest);
 
 
@@ -512,39 +820,68 @@ var suite,runner,result,assertBlock;
 function $TestSuiteRunner(){return globals.TestSuiteRunner||(typeof TestSuiteRunner=="undefined"?nil:TestSuiteRunner)}
 function $TestSuiteRunner(){return globals.TestSuiteRunner||(typeof TestSuiteRunner=="undefined"?nil:TestSuiteRunner)}
 function $Set(){return globals.Set||(typeof Set=="undefined"?nil:Set)}
 function $Set(){return globals.Set||(typeof Set=="undefined"?nil:Set)}
 function $ResultAnnouncement(){return globals.ResultAnnouncement||(typeof ResultAnnouncement=="undefined"?nil:ResultAnnouncement)}
 function $ResultAnnouncement(){return globals.ResultAnnouncement||(typeof ResultAnnouncement=="undefined"?nil:ResultAnnouncement)}
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 var $1,$2,$3;
 var $1,$2,$3;
 suite=["fakeTimeout", "fakeMultipleTimeoutFailing", "fakeMultipleTimeoutPassing", "testPass"]._collect_((function(each){
 suite=["fakeTimeout", "fakeMultipleTimeoutFailing", "fakeMultipleTimeoutPassing", "testPass"]._collect_((function(each){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx2) {
 return smalltalk.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
 return _st(self._class())._selector_(each);
 return _st(self._class())._selector_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
+//>>excludeEnd("ctx");
+}));
 runner=_st($TestSuiteRunner())._on_(suite);
 runner=_st($TestSuiteRunner())._on_(suite);
 self._timeout_((200));
 self._timeout_((200));
 result=_st(runner)._result();
 result=_st(runner)._result();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["result"]=1;
 $ctx1.sendIdx["result"]=1;
+//>>excludeEnd("ctx");
 assertBlock=self._async_((function(){
 assertBlock=self._async_((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx2) {
 return smalltalk.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
 $1=self._selectorSetOf_(_st(result)._errors());
 $1=self._selectorSetOf_(_st(result)._errors());
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["selectorSetOf:"]=1;
 $ctx2.sendIdx["selectorSetOf:"]=1;
+//>>excludeEnd("ctx");
 self._assert_equals_($1,_st($Set())._new());
 self._assert_equals_($1,_st($Set())._new());
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["assert:equals:"]=1;
 $ctx2.sendIdx["assert:equals:"]=1;
+//>>excludeEnd("ctx");
 self._assert_equals_(self._selectorSetOf_(_st(result)._failures()),["fakeMultipleTimeoutFailing", "fakeTimeout"]._asSet());
 self._assert_equals_(self._selectorSetOf_(_st(result)._failures()),["fakeMultipleTimeoutFailing", "fakeTimeout"]._asSet());
 return self._finished();
 return self._finished();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
+//>>excludeEnd("ctx");
+}));
 _st(_st(runner)._announcer())._on_do_($ResultAnnouncement(),(function(ann){
 _st(_st(runner)._announcer())._on_do_($ResultAnnouncement(),(function(ann){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx2) {
 return smalltalk.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
 $2=_st(_st(ann)._result()).__eq_eq(result);
 $2=_st(_st(ann)._result()).__eq_eq(result);
 if(smalltalk.assert($2)){
 if(smalltalk.assert($2)){
 $3=_st(_st(result)._runs()).__eq(_st(result)._total());
 $3=_st(_st(result)._runs()).__eq(_st(result)._total());
 return _st($3)._ifTrue_(assertBlock);
 return _st($3)._ifTrue_(assertBlock);
 };
 };
-}, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1,3)})}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1,3)});
+//>>excludeEnd("ctx");
+}));
 _st(runner)._run();
 _st(runner)._run();
-return self}, function($ctx1) {$ctx1.fill(self,"testTimeouts",{suite:suite,runner:runner,result:result,assertBlock:assertBlock},globals.SUnitAsyncTest)})},
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"testTimeouts",{suite:suite,runner:runner,result:result,assertBlock:assertBlock},globals.SUnitAsyncTest)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 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",
 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",
-messageSends: ["collect:", "selector:", "class", "on:", "timeout:", "result", "async:", "assert:equals:", "selectorSetOf:", "errors", "new", "failures", "asSet", "finished", "on:do:", "announcer", "ifTrue:", "==", "=", "runs", "total", "run"],
-referencedClasses: ["TestSuiteRunner", "Set", "ResultAnnouncement"]
+referencedClasses: ["TestSuiteRunner", "Set", "ResultAnnouncement"],
+//>>excludeEnd("ide");
+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);
 globals.SUnitAsyncTest);
 
 
@@ -555,40 +892,68 @@ protocol: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var x;
 var x;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx1) { 
 return smalltalk.withContext(function($ctx1) { 
+//>>excludeEnd("ctx");
 var $1;
 var $1;
 self["@flag"]="bad";
 self["@flag"]="bad";
 self._timeout_((10));
 self._timeout_((10));
 x=(0);
 x=(0);
 $1=self._async_((function(){
 $1=self._async_((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx2) {
 return smalltalk.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
 self._finished();
 self._finished();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["finished"]=1;
 $ctx2.sendIdx["finished"]=1;
+//>>excludeEnd("ctx");
 self["@flag"]="ok";
 self["@flag"]="ok";
 self["@flag"];
 self["@flag"];
 x=_st(x).__plus((1));
 x=_st(x).__plus((1));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["+"]=1;
 $ctx2.sendIdx["+"]=1;
+//>>excludeEnd("ctx");
 x;
 x;
 return self._assert_equals_(x,(1));
 return self._assert_equals_(x,(1));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["assert:equals:"]=1;
 $ctx2.sendIdx["assert:equals:"]=1;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
+//>>excludeEnd("ctx");
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
+//>>excludeEnd("ctx");
+}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["async:"]=1;
 $ctx1.sendIdx["async:"]=1;
+//>>excludeEnd("ctx");
 self["@flag"]=_st($1)._valueWithTimeout_((0));
 self["@flag"]=_st($1)._valueWithTimeout_((0));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["valueWithTimeout:"]=1;
 $ctx1.sendIdx["valueWithTimeout:"]=1;
+//>>excludeEnd("ctx");
 self["@flag"]=_st(self._async_((function(){
 self["@flag"]=_st(self._async_((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return smalltalk.withContext(function($ctx2) {
 return smalltalk.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
 self._finished();
 self._finished();
 self["@flag"]="ok";
 self["@flag"]="ok";
 self["@flag"];
 self["@flag"];
 x=_st(x).__plus((1));
 x=_st(x).__plus((1));
 x;
 x;
 return self._assert_equals_(x,(1));
 return self._assert_equals_(x,(1));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})})))._valueWithTimeout_((0));
-return self}, function($ctx1) {$ctx1.fill(self,"testTwoAsyncPassesWithFinishedOnlyOneIsRun",{x:x},globals.SUnitAsyncTest)})},
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
+//>>excludeEnd("ctx");
+})))._valueWithTimeout_((0));
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"testTwoAsyncPassesWithFinishedOnlyOneIsRun",{x:x},globals.SUnitAsyncTest)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
 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.",
 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.",
-messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished", "+", "assert:equals:"],
-referencedClasses: []
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished", "+", "assert:equals:"]
 }),
 }),
 globals.SUnitAsyncTest);
 globals.SUnitAsyncTest);
 
 

File diff suppressed because it is too large
+ 432 - 115
src/SUnit.js


File diff suppressed because it is too large
+ 390 - 114
src/Web.js


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