Bug 468116: [otdre] weaving access to indirectly inherited base method
fails in OT/Equinox settings
- fix change in OTSpecialAccessAttribute
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/bytecode/OTSpecialAccessAttribute.java b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/bytecode/OTSpecialAccessAttribute.java
index 4e2433f..6b2058a 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/bytecode/OTSpecialAccessAttribute.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/bytecode/OTSpecialAccessAttribute.java
@@ -123,8 +123,11 @@
// for OTDRE pass all classes to weave from boundBaseclass up to the actual declaring class (:-separated)
ReferenceBinding someClass = this.boundBaseclass.getRealClass();
if (someClass != null && TypeBinding.notEquals(someClass, this.method.declaringClass)) {
- while ((someClass = someClass.superclass()) != null && TypeBinding.notEquals(someClass, this.method.declaringClass))
+ while ((someClass = someClass.superclass()) != null) {
weaveIntoClasses = CharOperation.concat(weaveIntoClasses, someClass.attributeName(), ':');
+ if (TypeBinding.equalsEquals(someClass, this.method.declaringClass))
+ break;
+ }
}
}
writeName(weaveIntoClasses);