Browse Source

SmalltalkMetaclass w/o .className, related code.

Herbert Vojčík 7 years ago
parent
commit
e34b66902b
3 changed files with 73 additions and 58 deletions
  1. 52 42
      src/Kernel-Classes.js
  2. 12 14
      src/Kernel-Classes.st
  3. 9 2
      support/boot.js

+ 52 - 42
src/Kernel-Classes.js

@@ -625,6 +625,45 @@ messageSends: ["ifFalse:", "beginsWith:", "package", "named:ifAbsent:", "allButF
 }),
 $globals.BehaviorBody);
 
+$core.addMethod(
+$core.method({
+selector: "printOn:",
+protocol: 'printing',
+fn: function (aStream){
+var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+var $1,$receiver;
+$1=self._name();
+if(($receiver = $1) == null || $receiver.isNil){
+(
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.supercall = true,
+//>>excludeEnd("ctx");
+($globals.BehaviorBody.superclass||$boot.nilAsClass).fn.prototype._printOn_.apply($recv(self), [aStream]));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.supercall = false;
+//>>excludeEnd("ctx");;
+} else {
+var name;
+name=$receiver;
+$recv(aStream)._nextPutAll_(name);
+}
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},$globals.BehaviorBody)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: ["aStream"],
+source: "printOn: aStream\x0a\x09self name\x0a\x09\x09ifNil: [ super printOn: aStream ]\x0a\x09\x09ifNotNil: [ :name | aStream nextPutAll: name ]",
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["ifNil:ifNotNil:", "name", "printOn:", "nextPutAll:"]
+}),
+$globals.BehaviorBody);
+
 $core.addMethod(
 $core.method({
 selector: "protocols",
@@ -1820,30 +1859,6 @@ messageSends: ["ifTrue:", "=", "package", "basicAt:put:", "removeElement:", "org
 }),
 $globals.Class);
 
-$core.addMethod(
-$core.method({
-selector: "printOn:",
-protocol: 'printing',
-fn: function (aStream){
-var self=this;
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx1) {
-//>>excludeEnd("ctx");
-$recv(aStream)._nextPutAll_(self._name());
-return self;
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},$globals.Class)});
-//>>excludeEnd("ctx");
-},
-//>>excludeStart("ide", pragmas.excludeIdeData);
-args: ["aStream"],
-source: "printOn: aStream\x0a\x09aStream nextPutAll: self name",
-referencedClasses: [],
-//>>excludeEnd("ide");
-messageSends: ["nextPutAll:", "name"]
-}),
-$globals.Class);
-
 $core.addMethod(
 $core.method({
 selector: "rename:",
@@ -2191,52 +2206,47 @@ $globals.Metaclass);
 
 $core.addMethod(
 $core.method({
-selector: "package",
+selector: "name",
 protocol: 'accessing',
 fn: function (){
 var self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-return $recv(self._instanceClass())._package();
+return $recv($recv(self._instanceClass())._name()).__comma(" class");
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"package",{},$globals.Metaclass)});
+}, function($ctx1) {$ctx1.fill(self,"name",{},$globals.Metaclass)});
 //>>excludeEnd("ctx");
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
-source: "package\x0a\x09^ self instanceClass package",
+source: "name\x0a\x09^ self instanceClass name, ' class'",
 referencedClasses: [],
 //>>excludeEnd("ide");
-messageSends: ["package", "instanceClass"]
+messageSends: [",", "name", "instanceClass"]
 }),
 $globals.Metaclass);
 
 $core.addMethod(
 $core.method({
-selector: "printOn:",
-protocol: 'printing',
-fn: function (aStream){
+selector: "package",
+protocol: 'accessing',
+fn: function (){
 var self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-$recv(aStream)._nextPutAll_($recv(self._instanceClass())._name());
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["nextPutAll:"]=1;
-//>>excludeEnd("ctx");
-$recv(aStream)._nextPutAll_(" class");
-return self;
+return $recv(self._instanceClass())._package();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},$globals.Metaclass)});
+}, function($ctx1) {$ctx1.fill(self,"package",{},$globals.Metaclass)});
 //>>excludeEnd("ctx");
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
-args: ["aStream"],
-source: "printOn: aStream\x0a\x09aStream\x0a\x09\x09nextPutAll: self instanceClass name;\x0a\x09\x09nextPutAll: ' class'",
+args: [],
+source: "package\x0a\x09^ self instanceClass package",
 referencedClasses: [],
 //>>excludeEnd("ide");
-messageSends: ["nextPutAll:", "name", "instanceClass"]
+messageSends: ["package", "instanceClass"]
 }),
 $globals.Metaclass);
 

+ 12 - 14
src/Kernel-Classes.st

@@ -195,6 +195,14 @@ protocolsDo: aBlock
 		aBlock value: protocol value: (methodsByProtocol at: protocol) ]
 ! !
 
+!BehaviorBody methodsFor: 'printing'!
+
+printOn: aStream
+	self name
+		ifNil: [ super printOn: aStream ]
+		ifNotNil: [ :name | aStream nextPutAll: name ]
+! !
+
 !BehaviorBody methodsFor: 'private'!
 
 basicAddCompiledMethod: aMethod
@@ -472,12 +480,6 @@ asJavascript
 	^ '$globals.', self name
 ! !
 
-!Class methodsFor: 'printing'!
-
-printOn: aStream
-	aStream nextPutAll: self name
-! !
-
 !Class methodsFor: 'testing'!
 
 isClass
@@ -514,6 +516,10 @@ instanceVariableNames: aCollection
 		class: self instanceVariableNames: aCollection
 !
 
+name
+	^ self instanceClass name, ' class'
+!
+
 package
 	^ self instanceClass package
 !
@@ -536,14 +542,6 @@ asJavascript
 	^ '$globals.', self instanceClass name, '.klass'
 ! !
 
-!Metaclass methodsFor: 'printing'!
-
-printOn: aStream
-	aStream
-		nextPutAll: self instanceClass name;
-		nextPutAll: ' class'
-! !
-
 !Metaclass methodsFor: 'testing'!
 
 isMetaclass

+ 9 - 2
support/boot.js

@@ -387,6 +387,10 @@ define(['require', './brikz', './compatibility'], function (require, Brikz) {
 
         inherits(SmalltalkTrait, SmalltalkBehaviorBody);
 
+        SmalltalkTrait.prototype.toString = function () {
+            return 'Smalltalk Trait ' + this.className;
+        };
+
         SmalltalkTrait.prototype.trait = true;
 
         SmalltalkTrait.prototype.added = function () {
@@ -464,10 +468,14 @@ define(['require', './brikz', './compatibility'], function (require, Brikz) {
         // Effective superclass of all classes created with `nil subclass: ...`.
         var nilAsClass = this.nilAsClass = {fn: SmalltalkRoot, klass: {fn: SmalltalkClass}};
 
-        SmalltalkBehavior.prototype.toString = function () {
+        SmalltalkClass.prototype.toString = function () {
             return 'Smalltalk ' + this.className;
         };
 
+        SmalltalkMetaclass.prototype.toString = function () {
+            return 'Smalltalk Metaclass ' + this.instanceClass.className;
+        };
+
         SmalltalkMetaclass.prototype.meta = true;
 
         SmalltalkClass.prototype.added = function () {
@@ -530,7 +538,6 @@ define(['require', './brikz', './compatibility'], function (require, Brikz) {
             setupBehavior(that, spec.pkg);
 
             that.className = spec.className;
-            meta.className = spec.className + ' class';
             meta.superclass = spec.superclass.klass;
             return that;
         }