Browse Source

Move to amber 0.19.1.

Herbert Vojčík 6 years ago
parent
commit
e67e5b041d
7 changed files with 183 additions and 148 deletions
  1. 56 29
      Gruntfile.js
  2. 22 16
      bower.json
  3. 1 1
      devel.js
  4. 20 15
      index.html
  5. 14 8
      package.json
  6. 62 79
      src/Lyst.js
  7. 8 0
      testing.js

+ 56 - 29
Gruntfile.js

@@ -1,20 +1,29 @@
 'use strict';
 
 module.exports = function (grunt) {
-    var path = require('path');
-
     // These plugins provide necessary tasks.
     grunt.loadNpmTasks('grunt-contrib-clean');
     grunt.loadNpmTasks('grunt-contrib-requirejs');
-    grunt.loadNpmTasks('grunt-execute');
+    grunt.loadNpmTasks('grunt-exec');
     grunt.loadNpmTasks('amber-dev');
 
+    var path = require('path'),
+        helpers = require('amber-dev').helpers;
+
     // Default task.
-    grunt.registerTask('default', ['amberc:all']);
-    grunt.registerTask('test', ['amberc:test_runner', 'execute:test_runner', 'clean:test_runner']);
+    grunt.registerTask('default', ['amdconfig:app', 'amberc:all']);
+    grunt.registerTask('test', ['amdconfig:app', 'requirejs:test_runner', 'exec:test_runner', 'clean:test_runner']);
     grunt.registerTask('devel', ['amdconfig:app', 'requirejs:devel']);
     grunt.registerTask('deploy', ['amdconfig:app', 'requirejs:deploy']);
 
+    var polyfillThenPromiseApp = function () {
+        define(["require", "amber/es2015-polyfills"], function (require) {
+            return new Promise(function (resolve, reject) {
+                require(["__app__"], resolve, reject);
+            });
+        });
+    };
+
     // Project configuration.
     grunt.initConfig({
         // Metadata.
@@ -28,8 +37,7 @@ module.exports = function (grunt) {
         amberc: {
             options: {
                 amber_dir: path.join(__dirname, "bower_components", "amber"),
-                library_dirs: ['src'],
-                closure_jar: ''
+                configFile: "config.js"
             },
             all: {
                 src: [
@@ -37,54 +45,73 @@ module.exports = function (grunt) {
                     // list all tests in dependency order
                 ],
                 amd_namespace: 'lyst',
-                libraries: ['SUnit', 'Web']
-            },
-            test_runner: {
-                src: ['node_modules/amber-dev/lib/Test.st'],
-                libraries: [
-                    /* add dependencies packages here */
-                    'Lyst', /* add other code-to-test packages here */
-                    'SUnit'
-                    /* add other test packages here */
-                ],
-                main_class: 'NodeTestRunner',
-                output_name: 'test_runner'
+                libraries: ['amber_core/SUnit', 'amber/web/Web']
             }
         },
 
         amdconfig: {app: {dest: 'config.js'}},
 
         requirejs: {
+            options: {
+                useStrict: true
+            },
             deploy: {
                 options: {
                     mainConfigFile: "config.js",
-                    onBuildWrite: function (moduleName, path, contents) {
-                        return moduleName === "config" ? contents + "\nrequire.config({map:{'*':{app:'deploy'}}});" : contents;
+                    rawText: {
+                        "app": '(' + polyfillThenPromiseApp + '());',
+                        "__app__": 'define(["deploy", "amber_core/Platform-Browser"],function(x){return x});'
                     },
                     pragmas: {
                         excludeIdeData: true,
                         excludeDebugContexts: true
                     },
-                    include: ['config', 'node_modules/requirejs/require', 'deploy'],
+                    include: ['config', 'node_modules/requirejs/require', 'app', 'amber/lazypack', '__app__'],
+                    optimize: "uglify2",
                     out: "the.js"
                 }
             },
             devel: {
                 options: {
                     mainConfigFile: "config.js",
-                    onBuildWrite: function (moduleName, path, contents) {
-                        return moduleName === "config" ? contents + "\nrequire.config({map:{'*':{app:'devel'}}});" : contents;
+                    rawText: {
+                        "app": '(' + polyfillThenPromiseApp + '());',
+                        "__app__": 'define(["devel", "amber_core/Platform-Browser"],function(x){return x});'
                     },
-                    include: ['config', 'node_modules/requirejs/require'],
+                    include: ['config', 'node_modules/requirejs/require', 'app', '__app__'],
+                    exclude: ['devel'],
                     out: "the.js"
                 }
+            },
+            test_runner: {
+                options: {
+                    mainConfigFile: "config.js",
+                    rawText: {
+                        "jquery": "/* do not load in node test runner */",
+                        "__app__": "(" + function () {
+                            define(["testing", "amber_core/Platform-Node", "amber_devkit/NodeTestRunner"], function (amber) {
+                                amber.initialize().then(function () {
+                                    amber.globals.NodeTestRunner._main();
+                                });
+                            });
+                        } + "());",
+                        "app": "(" + polyfillThenPromiseApp + "());"
+                    },
+                    paths: {"amber_devkit": helpers.libPath},
+                    pragmas: {
+                        excludeIdeData: true
+                    },
+                    include: ['app', 'amber/lazypack', '__app__'],
+                    insertRequire: ['app'],
+                    optimize: "none",
+                    wrap: helpers.nodeWrapperWithShebang,
+                    out: "test_runner.js"
+                }
             }
         },
 
-        execute: {
-            test_runner: {
-                src: ['test_runner.js']
-            }
+        exec: {
+            test_runner: 'node test_runner.js'
         },
 
         clean: {

+ 22 - 16
bower.json

@@ -1,18 +1,6 @@
 {
   "name": "lyst",
-  "version": "0.1.2",
-  "homepage": "https://lolg.it/herby/lyst",
-  "authors": [
-    "Herbert Vojčík <herby@mailbox.sk>"
-  ],
   "description": "Access hierarchical data with array-indexes. For Amber Smalltalk.",
-  "keywords": [
-    "amber",
-    "smalltalk",
-    "data",
-    "hierarchy"
-  ],
-  "license": "MIT",
   "ignore": [
     "**/.*",
     "node_modules",
@@ -22,12 +10,30 @@
     "test",
     "tests"
   ],
+  "authors": [
+    {
+      "name": "Herbert Vojčík",
+      "email": "herby@mailbox.sk"
+    }
+  ],
+  "homepage": "https://lolg.it/herby/lyst",
+  "keywords": [
+    "amber",
+    "smalltalk",
+    "data",
+    "hierarchy"
+  ],
+  "license": [
+    "MIT"
+  ],
+  "private": false,
   "dependencies": {
-    "amber": ">=0.14.1"
+    "amber": "^0.19.1",
+    "amber-compat-es2015": "^0.1.5"
   },
   "devDependencies": {
-    "amber-contrib-legacy": "^0.2.1",
+    "amber-contrib-legacy": "^0.5.0",
     "amber-ide-starter-dialog": "^0.1.0",
-    "helios": ">=0.5.2"
+    "helios": "^0.8.0"
   }
-}
+}

+ 1 - 1
devel.js

@@ -1,6 +1,6 @@
 define([
+    './testing',
     'amber/devel',
-    './deploy',
     // --- packages used only during development begin here ---
     'amber/legacy/IDE'
     // --- packages used only during development end here ---

+ 20 - 15
index.html

@@ -1,23 +1,28 @@
 <!DOCTYPE html>
 <html>
 
-  <head>
+<head>
     <title>Lyst</title>
-    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
-    <meta name="author" content="Herbert Vojčík" />
+    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
+    <meta name="author" content="Herbert Vojčík"/>
     <script type='text/javascript' src='the.js'></script>
-  </head>
+</head>
 
-  <body>
-  <script type='text/javascript'>
-      require(['app'], function (amber) {
-          amber.initialize({
-            //used for all new packages in IDE
-            'transport.defaultAmdNamespace': "lyst"
-          });
-          require(["amber-ide-starter-dialog"], function (dlg) { dlg.start(); });
-      });
-  </script>
-  </body>
+<body>
+<script type='text/javascript'>
+    require(['app'], function (amberPromise) {
+        amberPromise.then(function (amber) {
+            amber.initialize({
+                //used for all new packages in IDE
+                'transport.defaultAmdNamespace': "lyst"
+            }).then(function () {
+                require(["amber-ide-starter-dialog"], function (dlg) {
+                    dlg.start();
+                });
+            });
+        });
+    });
+</script>
+</body>
 
 </html>

+ 14 - 8
package.json

@@ -6,7 +6,8 @@
   "homepage": "https://lolg.it/herby/lyst",
   "author": {
     "name": "Herbert Vojčík",
-    "email": "herby@mailbox.sk"
+    "email": "herby@mailbox.sk",
+    "url": "https://blog.herby.sk/"
   },
   "repository": {
     "type": "git",
@@ -15,19 +16,24 @@
   "bugs": {
     "url": "https://lolg.it/herby/lyst/issues"
   },
-  "license": "MIT",
+  "licenses": [
+    {
+      "type": "MIT",
+      "url": "https://lolg.it/herby/lyst/blob/master/LICENSE-MIT"
+    }
+  ],
   "engines": {
-    "node": ">= 0.8.0"
+    "node": ">=4.0.0"
   },
   "scripts": {
     "test": "grunt test"
   },
   "devDependencies": {
-    "amber-dev": "^0.3.0",
-    "grunt": "^0.4.5",
-    "grunt-contrib-clean": "^0.6.0",
-    "grunt-contrib-requirejs": "^0.4.4",
-    "grunt-execute": "^0.2.2",
+    "amber-dev": "^0.10.0",
+    "grunt": "1.0.1",
+    "grunt-contrib-clean": "^1.1.0",
+    "grunt-contrib-requirejs": "^1.0.0",
+    "grunt-exec": "^2.0.0",
     "requirejs": "^2.1.15"
   },
   "keywords": [

+ 62 - 79
src/Lyst.js

@@ -1,22 +1,25 @@
-define("lyst/Lyst", ["amber/boot", "amber_core/Kernel-Objects", "amber_core/Kernel-Collections"], function($boot){"use strict";
-var $core=$boot.api,nil=$boot.nil,$recv=$boot.asReceiver,$globals=$boot.globals;
-$core.addPackage('Lyst');
+define(["amber/boot", "amber_core/Kernel-Collections", "amber_core/Kernel-Objects"], function($boot){"use strict";
+if(!$boot.nilAsReceiver)$boot.nilAsReceiver=$boot.nil;
+if(!("nilAsValue" in $boot))$boot.nilAsValue=$boot.nilAsReceiver;
+var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
+if(!$boot.nilAsClass)$boot.nilAsClass=$boot.dnu;
+$core.addPackage("Lyst");
 $core.packages["Lyst"].innerEval = function (expr) { return eval(expr); };
 $core.packages["Lyst"].transport = {"type":"amd","amdNamespace":"lyst"};
 
-$core.addClass('Lyst', $globals.Object, [], 'Lyst');
+$core.addClass("Lyst", $globals.Object, [], "Lyst");
 
 $core.addMethod(
 $core.method({
 selector: "parse:",
-protocol: 'parsing',
+protocol: "parsing",
 fn: function (message){
-var self=this;
+var self=this,$self=this;
 var result,stack,anArray;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2,$3,$5,$4,$6,$7,$8,$9,$10,$11,$12;
+var $1,$2,$3,$5,$4,$6,$7,$8,$9,$10,$11;
 anArray=$recv(message)._tokenize_(" ");
 result=[];
 stack=[result];
@@ -145,7 +148,7 @@ $ctx3.sendIdx["="]=3;
 if($core.assert($8)){
 inner=[$recv(inner)._allButFirst()];
 inner;
-};
+}
 $9=$recv(inner)._isString();
 if($core.assert($9)){
 asNum=$recv($recv(inner)._ifEmpty_((function(){
@@ -154,7 +157,7 @@ return "NaN";
 })))._asNumber();
 } else {
 asNum=inner;
-};
+}
 asNum;
 $10=$recv(asNum).__eq(asNum);
 if($core.assert($10)){
@@ -176,7 +179,7 @@ return $recv($recv(stack)._last())._add_(inner);
 }, function($ctx3) {$ctx3.fillBlock({},$ctx2,15)});
 //>>excludeEnd("ctx");
 }));
-};
+}
 return $recv(close)._timesRepeat_((function(){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx3) {
@@ -190,10 +193,9 @@ return $recv(stack)._removeLast();
 }, function($ctx2) {$ctx2.fillBlock({each:each,asNum:asNum,inner:inner,close:close},$ctx1,1)});
 //>>excludeEnd("ctx");
 }));
-$12=result;
-return $12;
+return result;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"parse:",{message:message,result:result,stack:stack,anArray:anArray},$globals.Lyst.klass)});
+}, function($ctx1) {$ctx1.fill(self,"parse:",{message:message,result:result,stack:stack,anArray:anArray},$globals.Lyst.a$cls)});
 //>>excludeEnd("ctx");
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
@@ -203,23 +205,22 @@ referencedClasses: [],
 //>>excludeEnd("ide");
 messageSends: ["tokenize:", "do:", "whileTrue:", "and:", "notEmpty", "=", "first", "allButFirst", "add:", "last", "allButLast", "+", "ifTrue:", "ifTrue:ifFalse:", "isString", "asNumber", "ifEmpty:", "ifNotEmpty:", "timesRepeat:", "removeLast"]
 }),
-$globals.Lyst.klass);
+$globals.Lyst.a$cls);
 
 $core.addMethod(
 $core.method({
 selector: "atYndexIn:ifAbsent:",
-protocol: '*Lyst',
+protocol: "*Lyst",
 fn: function (anObject,aBlock){
-var self=this;
+var self=this,$self=this;
 var receiver,selector,result;
-function $MessageNotUnderstood(){return $globals.MessageNotUnderstood||(typeof MessageNotUnderstood=="undefined"?nil:MessageNotUnderstood)}
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $5,$4,$3,$2,$1,$6,$7;
+var $5,$4,$3,$2,$1;
 var $early={};
 try {
-selector=self._first();
+selector=$self._first();
 receiver=$recv(anObject)._yourself();
 $recv((function(){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
@@ -230,7 +231,7 @@ return result;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
 //>>excludeEnd("ctx");
-}))._on_do_($MessageNotUnderstood(),(function(mnu){
+}))._on_do_($globals.MessageNotUnderstood,(function(mnu){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx2) {
 //>>excludeEnd("ctx");
@@ -263,15 +264,13 @@ $ctx2.sendIdx["and:"]=1;
 //>>excludeEnd("ctx");
 if(!$core.assert($1)){
 $recv(mnu)._resignal();
-};
-$6=$recv(aBlock)._value();
-throw $early=[$6];
+}
+throw $early=[$recv(aBlock)._value()];
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx2) {$ctx2.fillBlock({mnu:mnu},$ctx1,2)});
 //>>excludeEnd("ctx");
 }));
-$7=result;
-return $7;
+return result;
 }
 catch(e) {if(e===$early)return e[0]; throw e}
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
@@ -290,18 +289,17 @@ $globals.Array);
 $core.addMethod(
 $core.method({
 selector: "atYndexIn:ifAbsent:put:",
-protocol: '*Lyst',
+protocol: "*Lyst",
 fn: function (anObject,aBlock,anotherObject){
-var self=this;
+var self=this,$self=this;
 var receiver,selector,arguments_,result;
-function $MessageNotUnderstood(){return $globals.MessageNotUnderstood||(typeof MessageNotUnderstood=="undefined"?nil:MessageNotUnderstood)}
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $5,$4,$3,$2,$1,$6,$7;
+var $5,$4,$3,$2,$1;
 var $early={};
 try {
-selector=$recv(self._first())._asMutator();
+selector=$recv($self._first())._asMutator();
 receiver=$recv(anObject)._yourself();
 arguments_=[anotherObject];
 $recv((function(){
@@ -313,7 +311,7 @@ return result;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
 //>>excludeEnd("ctx");
-}))._on_do_($MessageNotUnderstood(),(function(mnu){
+}))._on_do_($globals.MessageNotUnderstood,(function(mnu){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx2) {
 //>>excludeEnd("ctx");
@@ -349,15 +347,13 @@ $ctx2.sendIdx["and:"]=1;
 //>>excludeEnd("ctx");
 if(!$core.assert($1)){
 $recv(mnu)._resignal();
-};
-$6=$recv(aBlock)._value();
-throw $early=[$6];
+}
+throw $early=[$recv(aBlock)._value()];
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx2) {$ctx2.fillBlock({mnu:mnu},$ctx1,2)});
 //>>excludeEnd("ctx");
 }));
-$7=result;
-return $7;
+return result;
 }
 catch(e) {if(e===$early)return e[0]; throw e}
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
@@ -376,13 +372,13 @@ $globals.Array);
 $core.addMethod(
 $core.method({
 selector: "atYndexIn:ifAbsent:",
-protocol: '*Lyst',
+protocol: "*Lyst",
 fn: function (anObject,aBlock){
-var self=this;
+var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2;
+var $1;
 var $early={};
 try {
 $1=$recv(anObject)._respondsTo_("at:ifAbsent:");
@@ -390,8 +386,7 @@ $recv($1)._ifTrue_ifFalse_((function(){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx2) {
 //>>excludeEnd("ctx");
-$2=$recv(anObject)._at_ifAbsent_(self,aBlock);
-throw $early=[$2];
+throw $early=[$recv(anObject)._at_ifAbsent_(self,aBlock)];
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
 //>>excludeEnd("ctx");
@@ -415,13 +410,13 @@ $globals.Number);
 $core.addMethod(
 $core.method({
 selector: "atYndexIn:ifAbsent:put:",
-protocol: '*Lyst',
+protocol: "*Lyst",
 fn: function (anObject,aBlock,anotherObject){
-var self=this;
+var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2;
+var $1;
 var $early={};
 try {
 $1=$recv(anObject)._respondsTo_("at:put:");
@@ -429,8 +424,7 @@ $recv($1)._ifTrue_ifFalse_((function(){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx2) {
 //>>excludeEnd("ctx");
-$2=$recv(anObject)._at_put_(self,anotherObject);
-throw $early=[$2];
+throw $early=[$recv(anObject)._at_put_(self,anotherObject)];
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
 //>>excludeEnd("ctx");
@@ -454,16 +448,15 @@ $globals.Number);
 $core.addMethod(
 $core.method({
 selector: "atLyst:ifAbsent:",
-protocol: '*Lyst',
+protocol: "*Lyst",
 fn: function (aCollection,aBlock){
-var self=this;
+var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $2,$1;
 var $early={};
 try {
-$1=$recv(aCollection)._inject_into_(self,(function(soFar,segment){
+return $recv(aCollection)._inject_into_(self,(function(soFar,segment){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx2) {
 //>>excludeEnd("ctx");
@@ -471,8 +464,7 @@ return $recv(segment)._atYndexIn_ifAbsent_(soFar,(function(){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx3) {
 //>>excludeEnd("ctx");
-$2=$recv(aBlock)._value();
-throw $early=[$2];
+throw $early=[$recv(aBlock)._value()];
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
 //>>excludeEnd("ctx");
@@ -481,7 +473,6 @@ throw $early=[$2];
 }, function($ctx2) {$ctx2.fillBlock({soFar:soFar,segment:segment},$ctx1,1)});
 //>>excludeEnd("ctx");
 }));
-return $1;
 }
 catch(e) {if(e===$early)return e[0]; throw e}
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
@@ -500,17 +491,15 @@ $globals.Object);
 $core.addMethod(
 $core.method({
 selector: "atLyst:ifAbsent:put:",
-protocol: '*Lyst',
+protocol: "*Lyst",
 fn: function (aCollection,aBlock,value){
-var self=this;
+var self=this,$self=this;
 var penultimate;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1;
-penultimate=self._atLyst_ifAbsent_($recv(aCollection)._allButLast(),aBlock);
-$1=$recv($recv(aCollection)._last())._atYndexIn_ifAbsent_put_(penultimate,aBlock,value);
-return $1;
+penultimate=$self._atLyst_ifAbsent_($recv(aCollection)._allButLast(),aBlock);
+return $recv($recv(aCollection)._last())._atYndexIn_ifAbsent_put_(penultimate,aBlock,value);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"atLyst:ifAbsent:put:",{aCollection:aCollection,aBlock:aBlock,value:value,penultimate:penultimate},$globals.Object)});
 //>>excludeEnd("ctx");
@@ -527,15 +516,13 @@ $globals.Object);
 $core.addMethod(
 $core.method({
 selector: "atYndexIn:ifAbsent:",
-protocol: '*Lyst',
+protocol: "*Lyst",
 fn: function (anObject,aBlock){
-var self=this;
+var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1;
-$1=$recv(aBlock)._value();
-return $1;
+return $recv(aBlock)._value();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"atYndexIn:ifAbsent:",{anObject:anObject,aBlock:aBlock},$globals.Object)});
 //>>excludeEnd("ctx");
@@ -552,15 +539,13 @@ $globals.Object);
 $core.addMethod(
 $core.method({
 selector: "atYndexIn:ifAbsent:put:",
-protocol: '*Lyst',
+protocol: "*Lyst",
 fn: function (anObject,aBlock,anotherObject){
-var self=this;
+var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1;
-$1=$recv(aBlock)._value();
-return $1;
+return $recv(aBlock)._value();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"atYndexIn:ifAbsent:put:",{anObject:anObject,aBlock:aBlock,anotherObject:anotherObject},$globals.Object)});
 //>>excludeEnd("ctx");
@@ -577,13 +562,13 @@ $globals.Object);
 $core.addMethod(
 $core.method({
 selector: "atYndexIn:ifAbsent:",
-protocol: '*Lyst',
+protocol: "*Lyst",
 fn: function (anObject,aBlock){
-var self=this;
+var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2;
+var $1;
 var $early={};
 try {
 $1=$recv(anObject)._respondsTo_("at:ifAbsent:");
@@ -591,8 +576,7 @@ $recv($1)._ifTrue_ifFalse_((function(){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx2) {
 //>>excludeEnd("ctx");
-$2=$recv(anObject)._at_ifAbsent_(self,aBlock);
-throw $early=[$2];
+throw $early=[$recv(anObject)._at_ifAbsent_(self,aBlock)];
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
 //>>excludeEnd("ctx");
@@ -616,13 +600,13 @@ $globals.String);
 $core.addMethod(
 $core.method({
 selector: "atYndexIn:ifAbsent:put:",
-protocol: '*Lyst',
+protocol: "*Lyst",
 fn: function (anObject,aBlock,anotherObject){
-var self=this;
+var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2;
+var $1;
 var $early={};
 try {
 $1=$recv(anObject)._respondsTo_("at:put:");
@@ -630,8 +614,7 @@ $recv($1)._ifTrue_ifFalse_((function(){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx2) {
 //>>excludeEnd("ctx");
-$2=$recv(anObject)._at_put_(self,anotherObject);
-throw $early=[$2];
+throw $early=[$recv(anObject)._at_put_(self,anotherObject)];
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
 //>>excludeEnd("ctx");

+ 8 - 0
testing.js

@@ -0,0 +1,8 @@
+define([
+    './deploy',
+    'amber_core/SUnit',
+    // --- packages used only during automated testing begin here ---
+    // --- packages used only during automated testing end here ---
+], function (amber) {
+    return amber;
+});