Fix in code completion - do not add same method multiple times into completion list.
authorJan Vrany <jan.vrany@fit.cvut.cz>
Wed, 16 Oct 2013 15:44:43 +0100
changeset 131 ea84eea5a3c4
parent 130 1274cc0394cb
child 132 7c23c51d2cfd
Fix in code completion - do not add same method multiple times into completion list.
SmallSense__CompletionEngine.st
SmallSense__SmalltalkCompletionEngine.st
--- a/SmallSense__CompletionEngine.st	Mon Oct 14 15:14:48 2013 +0100
+++ b/SmallSense__CompletionEngine.st	Wed Oct 16 15:44:43 2013 +0100
@@ -73,7 +73,9 @@
                     | classes |
 
                     classes := selectors at: selector ifAbsentPut:[ Set new ].
-                    classes add: mthd mclass.
+                    (classes includes: mthd mclass) ifFalse:[
+                        classes add: mthd mclass.
+                    ].
                 ].
             ]
         ].
@@ -87,5 +89,6 @@
     ]
 
     "Created: / 03-10-2013 / 17:56:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 16-10-2013 / 15:35:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
--- a/SmallSense__SmalltalkCompletionEngine.st	Mon Oct 14 15:14:48 2013 +0100
+++ b/SmallSense__SmalltalkCompletionEngine.st	Wed Oct 16 15:44:43 2013 +0100
@@ -160,7 +160,7 @@
 !
 
 addMethodsForType: type 
-    | classes |
+    | classes seen |
 
     classes := type classes.
     classes size == 1 ifTrue:[
@@ -187,12 +187,14 @@
     ].
 
 
+    seen := Set new.
     type 
         classesDo: [:each | 
             | class |
 
             class := each.
-            [ class isNil ] whileFalse: [
+            [ class notNil and:[(seen includes: class) not]] whileTrue: [
+                seen add: class.
                 "/ Now, special care for Java classes, sigh...
                 (class isMetaclass and:[class theNonMetaclass isJavaClass]) ifTrue:[
                     class theNonMetaclass selectorsAndMethodsDo: [:selector :met | 
@@ -212,11 +214,11 @@
                     ].
                 ].
                 class := class superclass.
-            ].
+            ]
         ].
 
     "Created: / 26-11-2011 / 17:03:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 08-10-2013 / 11:05:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 16-10-2013 / 15:40:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 addPools