Browse Source

Do not set selectedClass to trait of a method in browser.

Herbert Vojčík 7 years ago
parent
commit
2d16ba4c6d
4 changed files with 27 additions and 12 deletions
  1. 16 5
      src/Helios-Core.js
  2. 4 3
      src/Helios-Core.st
  3. 6 3
      src/Helios-References.js
  4. 1 1
      src/Helios-References.st

+ 16 - 5
src/Helios-Core.js

@@ -1606,7 +1606,7 @@ var self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$receiver;
+var $1,$2,$receiver;
 $1=$recv(self["@selectedSelector"]).__eq(aCompiledMethod);
 if($core.assert($1)){
 return self;
@@ -1619,12 +1619,23 @@ if(($receiver = aCompiledMethod) == null || $receiver.isNil){
 self["@selectedSelector"]=nil;
 self["@selectedSelector"];
 } else {
+self["@selectedSelector"]=$recv(aCompiledMethod)._selector();
+self["@selectedSelector"];
+$2=$recv($recv(self["@selectedClass"])._notNil())._and_((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx3) {
+//>>excludeEnd("ctx");
+return $recv($recv(self["@selectedClass"])._methodDictionary())._includesKey_(self["@selectedSelector"]);
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2,5)});
+//>>excludeEnd("ctx");
+}));
+if(!$core.assert($2)){
 self["@selectedClass"]=$recv(aCompiledMethod)._methodClass();
 self["@selectedClass"];
 self["@selectedPackage"]=$recv($recv(self["@selectedClass"])._theNonMetaClass())._package();
 self["@selectedPackage"];
-self["@selectedSelector"]=$recv(aCompiledMethod)._selector();
-self["@selectedSelector"];
+}
 }
 return $recv(self._announcer())._announce_($recv($globals.HLMethodSelected)._on_(aCompiledMethod));
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
@@ -1638,10 +1649,10 @@ return self;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aCompiledMethod"],
-source: "selectedMethod: aCompiledMethod\x0a\x09selectedSelector = aCompiledMethod ifTrue: [ ^ self ].\x0a    \x0a    self withChangesDo: [\x0a\x09\x09aCompiledMethod\x0a    \x09\x09ifNil: [ selectedSelector := nil ]\x0a      \x09\x09ifNotNil: [\x0a\x09\x09\x09\x09selectedClass := aCompiledMethod methodClass.\x0a\x09\x09\x09\x09selectedPackage := selectedClass theNonMetaClass package.\x0a\x09\x09\x09\x09selectedSelector := aCompiledMethod selector ].\x0a\x0a\x09\x09self announcer announce: (HLMethodSelected on: aCompiledMethod) ]",
+source: "selectedMethod: aCompiledMethod\x0a\x09selectedSelector = aCompiledMethod ifTrue: [ ^ self ].\x0a    \x0a    self withChangesDo: [\x0a\x09\x09aCompiledMethod\x0a    \x09\x09ifNil: [ selectedSelector := nil ]\x0a      \x09\x09ifNotNil: [\x0a\x09\x09\x09\x09selectedSelector := aCompiledMethod selector.\x0a\x09\x09\x09\x09(selectedClass notNil and: [ selectedClass methodDictionary includesKey: selectedSelector ]) ifFalse: [\x0a\x09\x09\x09\x09\x09selectedClass := aCompiledMethod methodClass.\x0a\x09\x09\x09\x09\x09selectedPackage := selectedClass theNonMetaClass package ] ].\x0a\x0a\x09\x09self announcer announce: (HLMethodSelected on: aCompiledMethod) ]",
 referencedClasses: ["HLMethodSelected"],
 //>>excludeEnd("ide");
-messageSends: ["ifTrue:", "=", "withChangesDo:", "ifNil:ifNotNil:", "methodClass", "package", "theNonMetaClass", "selector", "announce:", "announcer", "on:"]
+messageSends: ["ifTrue:", "=", "withChangesDo:", "ifNil:ifNotNil:", "selector", "ifFalse:", "and:", "notNil", "includesKey:", "methodDictionary", "methodClass", "package", "theNonMetaClass", "announce:", "announcer", "on:"]
 }),
 $globals.HLToolModel);
 

+ 4 - 3
src/Helios-Core.st

@@ -200,9 +200,10 @@ selectedMethod: aCompiledMethod
 		aCompiledMethod
     		ifNil: [ selectedSelector := nil ]
       		ifNotNil: [
-				selectedClass := aCompiledMethod methodClass.
-				selectedPackage := selectedClass theNonMetaClass package.
-				selectedSelector := aCompiledMethod selector ].
+				selectedSelector := aCompiledMethod selector.
+				(selectedClass notNil and: [ selectedClass methodDictionary includesKey: selectedSelector ]) ifFalse: [
+					selectedClass := aCompiledMethod methodClass.
+					selectedPackage := selectedClass theNonMetaClass package ] ].
 
 		self announcer announce: (HLMethodSelected on: aCompiledMethod) ]
 !

+ 6 - 3
src/Helios-References.js

@@ -796,6 +796,7 @@ var self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
+var $1;
 (
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.supercall = true,
@@ -804,7 +805,9 @@ $ctx1.supercall = true,
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.supercall = false;
 //>>excludeEnd("ctx");;
-$recv(self._model())._selectedMethod_(aMethod);
+$1=self._model();
+$recv($1)._selectedClass_(nil);
+$recv($1)._selectedMethod_(aMethod);
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"selectItem:",{aMethod:aMethod},$globals.HLReferencesListWidget)});
@@ -812,10 +815,10 @@ return self;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aMethod"],
-source: "selectItem: aMethod\x0a\x09super selectItem: aMethod.\x0a\x09self model selectedMethod: aMethod",
+source: "selectItem: aMethod\x0a\x09super selectItem: aMethod.\x0a\x09self model selectedClass: nil; selectedMethod: aMethod",
 referencedClasses: [],
 //>>excludeEnd("ide");
-messageSends: ["selectItem:", "selectedMethod:", "model"]
+messageSends: ["selectItem:", "selectedClass:", "model", "selectedMethod:"]
 }),
 $globals.HLReferencesListWidget);
 

+ 1 - 1
src/Helios-References.st

@@ -172,7 +172,7 @@ observeModel
 
 selectItem: aMethod
 	super selectItem: aMethod.
-	self model selectedMethod: aMethod
+	self model selectedClass: nil; selectedMethod: aMethod
 ! !
 
 !HLReferencesListWidget methodsFor: 'reactions'!