瀏覽代碼

kernel: coreFns => specialConstructors, one-liner.

Herby Vojčík 4 年之前
父節點
當前提交
ddd0ed81a8
共有 2 個文件被更改,包括 25 次插入19 次删除
  1. 16 10
      lang/base/kernel-fundamentals.js
  2. 9 9
      lang/base/kernel-language.js

+ 16 - 10
lang/base/kernel-fundamentals.js

@@ -17,6 +17,10 @@ define(function () {
         this.globals = Object.create(global);
     }
 
+    function SpecialConstructorsBrik (brikz, st) {
+        this.specialConstructors = {};
+    }
+
     function EventBrik (brikz, st) {
         var emit = {};
 
@@ -28,10 +32,11 @@ define(function () {
         }
     }
 
+    RootBrik.deps=["specialConstructors"];
     function RootBrik (brikz, st) {
-        /* Smalltalk foundational objects */
+        var specialConstructors = brikz.specialConstructors.specialConstructors;
 
-        var coreFns = this.coreFns = {};
+        /* Smalltalk foundational objects */
 
         /* SmalltalkRoot is the hidden root of the normal Amber hierarchy.
          All objects including `ProtoObject` inherit from SmalltalkRoot.
@@ -46,8 +51,8 @@ define(function () {
         function SmalltalkObject () {
         }
 
-        coreFns.ProtoObject = inherits(SmalltalkProtoObject, SmalltalkRoot);
-        coreFns.Object = inherits(SmalltalkObject, SmalltalkProtoObject);
+        specialConstructors.ProtoObject = inherits(SmalltalkProtoObject, SmalltalkRoot);
+        specialConstructors.Object = inherits(SmalltalkObject, SmalltalkProtoObject);
 
         this.Root = SmalltalkRoot;
         this.Object = SmalltalkObject;
@@ -118,18 +123,18 @@ define(function () {
         st.traitsOrClasses = this.traitsOrClasses = traitsOrClasses;
     }
 
-    MethodsBrik.deps = ["event", "selectors", "root"];
+    MethodsBrik.deps = ["event", "selectors", "root", "specialConstructors"];
     function MethodsBrik (brikz, st) {
         var registerSelector = brikz.selectors.registerSelector;
         var SmalltalkObject = brikz.root.Object;
-        var coreFns = brikz.root.coreFns;
+        var specialConstructors = brikz.specialConstructors.specialConstructors;
         var emit = brikz.event.emit;
         var declareEvent = brikz.event.declareEvent;
 
         function SmalltalkMethod () {
         }
 
-        coreFns.CompiledMethod = inherits(SmalltalkMethod, SmalltalkObject);
+        specialConstructors.CompiledMethod = inherits(SmalltalkMethod, SmalltalkObject);
 
         /* Smalltalk method object. To add a method to a class,
          use api.addMethod() */
@@ -237,15 +242,15 @@ define(function () {
         };
     }
 
-    NilBrik.deps = ["root"];
+    NilBrik.deps = ["root", "specialConstructors"];
     function NilBrik (brikz, st) {
         var SmalltalkObject = brikz.root.Object;
-        var coreFns = brikz.root.coreFns;
+        var specialConstructors = brikz.specialConstructors.specialConstructors;
 
         function SmalltalkNil () {
         }
 
-        coreFns.UndefinedObject = inherits(SmalltalkNil, SmalltalkObject);
+        specialConstructors.UndefinedObject = inherits(SmalltalkNil, SmalltalkObject);
 
         this.nilAsReceiver = new SmalltalkNil();
         this.nilAsValue = this.nilAsReceiver; // TODO null
@@ -265,6 +270,7 @@ define(function () {
 
     function configureWithFundamentals (brikz) {
         brikz.smalltalkGlobals = SmalltalkGlobalsBrik;
+        brikz.specialConstructors = SpecialConstructorsBrik;
         brikz.root = RootBrik;
         brikz.nil = NilBrik;
         brikz.event = EventBrik;

+ 9 - 9
lang/base/kernel-language.js

@@ -20,9 +20,9 @@ define(function () {
         });
     }
 
-    TraitsBrik.deps = ["event", "behaviors", "methods", "composition", "root"];
+    TraitsBrik.deps = ["event", "behaviors", "methods", "composition", "root", "specialConstructors"];
     function TraitsBrik (brikz, st) {
-        var coreFns = brikz.root.coreFns;
+        var specialConstructors = brikz.specialConstructors.specialConstructors;
         var SmalltalkObject = brikz.root.Object;
         var setupMethods = brikz.methods.setupMethods;
         var traitMethodChanged = brikz.composition.traitMethodChanged;
@@ -33,7 +33,7 @@ define(function () {
         function SmalltalkTrait () {
         }
 
-        coreFns.Trait = inherits(SmalltalkTrait, SmalltalkObject);
+        specialConstructors.Trait = inherits(SmalltalkTrait, SmalltalkObject);
 
         SmalltalkTrait.prototype.trait = true;
 
@@ -205,10 +205,10 @@ define(function () {
         this.traitMethodChanged = traitMethodChanged;
     }
 
-    ClassesBrik.deps = ["root", "event", "behaviors", "methods", "arraySet", "smalltalkGlobals"];
+    ClassesBrik.deps = ["root", "specialConstructors", "event", "behaviors", "methods", "arraySet", "smalltalkGlobals"];
     function ClassesBrik (brikz, st) {
         var SmalltalkRoot = brikz.root.Root;
-        var coreFns = brikz.root.coreFns;
+        var specialConstructors = brikz.specialConstructors.specialConstructors;
         var globals = brikz.smalltalkGlobals.globals;
         var SmalltalkObject = brikz.root.Object;
         var buildTraitOrClass = brikz.behaviors.buildTraitOrClass;
@@ -228,9 +228,9 @@ define(function () {
         function SmalltalkMetaclass () {
         }
 
-        coreFns.Behavior = inherits(SmalltalkBehavior, SmalltalkObject);
-        coreFns.Class = inherits(SmalltalkClass, SmalltalkBehavior);
-        coreFns.Metaclass = inherits(SmalltalkMetaclass, SmalltalkBehavior);
+        specialConstructors.Behavior = inherits(SmalltalkBehavior, SmalltalkObject);
+        specialConstructors.Class = inherits(SmalltalkClass, SmalltalkBehavior);
+        specialConstructors.Metaclass = inherits(SmalltalkMetaclass, SmalltalkBehavior);
 
         // Fake root class of the system.
         // Effective superclass of all classes created with `nil subclass: ...`.
@@ -395,7 +395,7 @@ define(function () {
             if (typeof superclass === 'undefined' || superclass && superclass.a$nil) {
                 console.warn('Compiling ' + className + ' as a subclass of `nil`. A dependency might be missing.');
             }
-            return buildTraitOrClass(category, classBuilder(className, superclass, coreFns[className]));
+            return buildTraitOrClass(category, classBuilder(className, superclass, specialConstructors[className]));
         };
 
         st.removeClass = removeTraitOrClass;