src/JavaClass.st
branchjk_new_structure
changeset 905 d03d9e05c581
parent 903 0c989d6972bc
child 912 e651488f5741
--- a/src/JavaClass.st	Wed Aug 10 19:12:21 2011 +0000
+++ b/src/JavaClass.st	Wed Aug 10 22:22:53 2011 +0000
@@ -1475,23 +1475,25 @@
 !
 
 lookupMethodFor:selector
-    |method cls sel|
+    |method cls sel queue |
 
     sel := selector asSymbolIfInterned.
     sel notNil ifTrue:[
-        cls := self.
-        [cls ~= JavaObject] whileTrue:[
+        queue := OrderedCollection with: self.
+        [ queue isEmpty ] whileFalse:[
+            cls := queue removeFirst.
             method := cls compiledMethodAt:sel.
             method notNil ifTrue:[ ^ method ].
-            cls := cls isInterface 
-                        ifFalse: [cls superclass]
-                        ifTrue:  [cls superinterface].
+            queue addAll: cls interfaces.
+            cls isInterface ifFalse:[
+                cls superclass ~~ JavaObject ifTrue:[queue add: cls superclass]
+            ]
         ].
     ].
-    cls ifNotNil:[^super lookupMethodFor: selector].
+    "/cls ifNotNil:[^super lookupMethodFor: selector].
     ^ nil
 
-    "Modified: / 17-03-2011 / 13:52:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 10-08-2011 / 22:40:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 performStatic:selector