Browse Source

Trait >> theMetaClass ^ nil

Herbert Vojčík 7 years ago
parent
commit
4f658aefaf
2 changed files with 14 additions and 9 deletions
  1. 12 6
      src/Helios-References.js
  2. 2 3
      src/Helios-References.st

+ 12 - 6
src/Helios-References.js

@@ -1475,18 +1475,24 @@ var self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1;
+var $1,$receiver;
 self["@classesAndMetaclassesCache"]=$recv($globals.OrderedCollection)._new();
 $recv($recv(self._environment())._classes())._do_((function(each){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx2) {
 //>>excludeEnd("ctx");
-$1=self["@classesAndMetaclassesCache"];
-$recv($1)._add_(each);
+$recv(self["@classesAndMetaclassesCache"])._add_(each);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["add:"]=1;
 //>>excludeEnd("ctx");
-return $recv($1)._add_($recv(each)._theMetaClass());
+$1=$recv(each)._theMetaClass();
+if(($receiver = $1) == null || $receiver.isNil){
+return $1;
+} else {
+var meta;
+meta=$receiver;
+return $recv(self["@classesAndMetaclassesCache"])._add_(meta);
+}
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
 //>>excludeEnd("ctx");
@@ -1498,10 +1504,10 @@ return self;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
-source: "updateClassesAndMetaclassesCache\x0a\x09classesAndMetaclassesCache := OrderedCollection new.\x0a\x09\x0a\x09self environment classes do: [ :each |\x0a\x09\x09classesAndMetaclassesCache\x0a\x09\x09\x09\x09add: each; \x0a\x09\x09\x09\x09add: each theMetaClass ]",
+source: "updateClassesAndMetaclassesCache\x0a\x09classesAndMetaclassesCache := OrderedCollection new.\x0a\x09\x0a\x09self environment classes do: [ :each |\x0a\x09\x09classesAndMetaclassesCache add: each.\x0a\x09\x09each theMetaClass ifNotNil: [ :meta | classesAndMetaclassesCache add: meta ] ]",
 referencedClasses: ["OrderedCollection"],
 //>>excludeEnd("ide");
-messageSends: ["new", "do:", "classes", "environment", "add:", "theMetaClass"]
+messageSends: ["new", "do:", "classes", "environment", "add:", "ifNotNil:", "theMetaClass"]
 }),
 $globals.HLReferencesModel);
 

+ 2 - 3
src/Helios-References.st

@@ -369,9 +369,8 @@ updateClassesAndMetaclassesCache
 	classesAndMetaclassesCache := OrderedCollection new.
 	
 	self environment classes do: [ :each |
-		classesAndMetaclassesCache
-				add: each; 
-				add: each theMetaClass ]
+		classesAndMetaclassesCache add: each.
+		each theMetaClass ifNotNil: [ :meta | classesAndMetaclassesCache add: meta ] ]
 !
 
 updateMethodsCache