--- 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