Browse Source

Slightly refactor bootstrapping the packages.

Herbert Vojčík 7 years ago
parent
commit
a7a8782b31
3 changed files with 92 additions and 59 deletions
  1. 2 0
      API-CHANGES.txt
  2. 68 45
      src/Kernel-Infrastructure.js
  3. 22 14
      src/Kernel-Infrastructure.st

+ 2 - 0
API-CHANGES.txt

@@ -18,6 +18,8 @@
   + stubToAtMost:
 + NonBooleanReceiver class >>
   + signalOn:
++ Package class >>
+  + named:javaScriptDescriptor:
 + SmalltalkImage >>
   + packageDictionary
 + TMasterBehavior >>

+ 68 - 45
src/Kernel-Infrastructure.js

@@ -1519,6 +1519,61 @@ messageSends: []
 }),
 $globals.Package);
 
+$core.addMethod(
+$core.method({
+selector: "javaScriptDescriptor:",
+protocol: "accessing",
+fn: function (anObject){
+var self=this,$self=this;
+var basicEval,basicImports,basicTransport;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+basicEval=$recv(anObject)._at_ifAbsent_("innerEval",(function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
+return nil._asJavaScriptObject();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
+//>>excludeEnd("ctx");
+}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["at:ifAbsent:"]=1;
+//>>excludeEnd("ctx");
+basicImports=$recv(anObject)._at_ifAbsent_("imports",(function(){
+return [];
+
+}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["at:ifAbsent:"]=2;
+//>>excludeEnd("ctx");
+basicTransport=$recv(anObject)._at_ifAbsent_("transport",(function(){
+
+}));
+$self._basicAt_put_("innerEval",basicEval);
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["basicAt:put:"]=1;
+//>>excludeEnd("ctx");
+$self._basicAt_put_("imports",basicImports);
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["basicAt:put:"]=2;
+//>>excludeEnd("ctx");
+$self._basicAt_put_("transport",basicTransport);
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"javaScriptDescriptor:",{anObject:anObject,basicEval:basicEval,basicImports:basicImports,basicTransport:basicTransport},$globals.Package)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: ["anObject"],
+source: "javaScriptDescriptor: anObject\x0a\x09| basicEval basicImports basicTransport |\x0a\x0a\x09basicEval := (anObject at: 'innerEval' ifAbsent: [ nil asJavaScriptObject ]).\x0a\x09basicImports := (anObject at: 'imports' ifAbsent: [ #() ]).\x0a\x09basicTransport := (anObject at: 'transport' ifAbsent: []).\x0a\x09\x09\x09\x0a\x09self\x0a\x09\x09basicAt: 'innerEval' put: basicEval;\x0a\x09\x09basicAt: 'imports' put: basicImports;\x0a\x09\x09basicAt: 'transport' put: basicTransport\x0a\x09\x09\x09\x0a\x09\x09\x09",
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["at:ifAbsent:", "asJavaScriptObject", "basicAt:put:"]
+}),
+$globals.Package);
+
 $core.addMethod(
 $core.method({
 selector: "loadDependencies",
@@ -2155,59 +2210,27 @@ $globals.Package.a$cls);
 
 $core.addMethod(
 $core.method({
-selector: "named:options:",
-protocol: "accessing",
-fn: function (aPackageName,anObject){
+selector: "named:javaScriptDescriptor:",
+protocol: "instance creation",
+fn: function (aString,anObject){
 var self=this,$self=this;
 var package_;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2,$3,$4;
-package_=$self._named_(aPackageName);
-$1=package_;
-$2=$recv(anObject)._at_ifAbsent_("innerEval",(function(){
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx2) {
-//>>excludeEnd("ctx");
-return nil._asJavaScriptObject();
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
-//>>excludeEnd("ctx");
-}));
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["at:ifAbsent:"]=1;
-//>>excludeEnd("ctx");
-$recv($1)._basicAt_put_("innerEval",$2);
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["basicAt:put:"]=1;
-//>>excludeEnd("ctx");
-$3=package_;
-$4=$recv(anObject)._at_ifAbsent_("imports",(function(){
-return [];
-
-}));
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["at:ifAbsent:"]=2;
-//>>excludeEnd("ctx");
-$recv($3)._basicAt_put_("imports",$4);
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["basicAt:put:"]=2;
-//>>excludeEnd("ctx");
-$recv(package_)._basicAt_put_("transport",$recv(anObject)._at_ifAbsent_("transport",(function(){
-
-})));
+package_=$recv($globals.Smalltalk)._createPackage_(aString);
+$recv(package_)._javaScriptDescriptor_(anObject);
 return package_;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"named:options:",{aPackageName:aPackageName,anObject:anObject,package_:package_},$globals.Package.a$cls)});
+}, function($ctx1) {$ctx1.fill(self,"named:javaScriptDescriptor:",{aString:aString,anObject:anObject,package_:package_},$globals.Package.a$cls)});
 //>>excludeEnd("ctx");
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
-args: ["aPackageName", "anObject"],
-source: "named: aPackageName options: anObject\x0a\x09| package |\x0a\x09\x0a\x09package := self named: aPackageName.\x0a\x09package basicAt: 'innerEval' put:\x0a\x09\x09(anObject at: 'innerEval' ifAbsent: [ nil asJavaScriptObject ]).\x0a\x09package basicAt: 'imports' put:\x0a\x09\x09(anObject at: 'imports' ifAbsent: [ #() ]).\x0a\x09package basicAt: 'transport' put:\x0a\x09\x09(anObject at: 'transport' ifAbsent: []).\x0a\x09^ package",
-referencedClasses: [],
+args: ["aString", "anObject"],
+source: "named: aString javaScriptDescriptor: anObject\x0a\x09| package |\x0a\x09\x0a\x09package := Smalltalk createPackage: aString.\x0a\x09package javaScriptDescriptor: anObject.\x0a\x09^ package",
+referencedClasses: ["Smalltalk"],
 //>>excludeEnd("ide");
-messageSends: ["named:", "basicAt:put:", "at:ifAbsent:", "asJavaScriptObject"]
+messageSends: ["createPackage:", "javaScriptDescriptor:"]
 }),
 $globals.Package.a$cls);
 
@@ -2828,7 +2851,7 @@ $recv($recv($self._core())._packages())._keysAndValuesDo_((function(key,value){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx2) {
 //>>excludeEnd("ctx");
-return $recv($globals.Package)._named_options_(key,value);
+return $recv($globals.Package)._named_javaScriptDescriptor_(key,value);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,1)});
 //>>excludeEnd("ctx");
@@ -2840,10 +2863,10 @@ return self;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
-source: "adoptPackageDictionary\x0a\x09self core packages keysAndValuesDo: [ :key :value | Package named: key options: value ]",
+source: "adoptPackageDictionary\x0a\x09self core packages keysAndValuesDo: [ :key :value | Package named: key javaScriptDescriptor: value ]",
 referencedClasses: ["Package"],
 //>>excludeEnd("ide");
-messageSends: ["keysAndValuesDo:", "packages", "core", "named:options:"]
+messageSends: ["keysAndValuesDo:", "packages", "core", "named:javaScriptDescriptor:"]
 }),
 $globals.SmalltalkImage);
 

+ 22 - 14
src/Kernel-Infrastructure.st

@@ -363,6 +363,19 @@ importsDefinition
 		stream write: '}' ]
 !
 
+javaScriptDescriptor: anObject
+	| basicEval basicImports basicTransport |
+
+	basicEval := (anObject at: 'innerEval' ifAbsent: [ nil asJavaScriptObject ]).
+	basicImports := (anObject at: 'imports' ifAbsent: [ #() ]).
+	basicTransport := (anObject at: 'transport' ifAbsent: []).
+			
+	self
+		basicAt: 'innerEval' put: basicEval;
+		basicAt: 'imports' put: basicImports;
+		basicAt: 'transport' put: basicTransport
+!
+
 name
 	<inlineJS: 'return self.pkgName'>
 !
@@ -565,19 +578,6 @@ named: aPackageName imports: anArray transport: aTransport
 	^ package
 !
 
-named: aPackageName options: anObject
-	| package |
-	
-	package := self named: aPackageName.
-	package basicAt: 'innerEval' put:
-		(anObject at: 'innerEval' ifAbsent: [ nil asJavaScriptObject ]).
-	package basicAt: 'imports' put:
-		(anObject at: 'imports' ifAbsent: [ #() ]).
-	package basicAt: 'transport' put:
-		(anObject at: 'transport' ifAbsent: []).
-	^ package
-!
-
 named: aPackageName transport: aTransport
 	| package |
 	
@@ -589,6 +589,14 @@ named: aPackageName transport: aTransport
 
 !Package class methodsFor: 'instance creation'!
 
+named: aString javaScriptDescriptor: anObject
+	| package |
+	
+	package := Smalltalk createPackage: aString.
+	package javaScriptDescriptor: anObject.
+	^ package
+!
+
 new: aString
 	^ Package new
 		basicName: aString;
@@ -986,7 +994,7 @@ renamePackage: packageName to: newName
 !SmalltalkImage methodsFor: 'private'!
 
 adoptPackageDictionary
-	self core packages keysAndValuesDo: [ :key :value | Package named: key options: value ]
+	self core packages keysAndValuesDo: [ :key :value | Package named: key javaScriptDescriptor: value ]
 !
 
 basicCreatePackage: packageName