two small fixes on top of the latest patch re Bug 331877 - [compiler][generics] implicit inheritance must apply substitution for type variables from outer scope
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/bytecode/CallinMethodMappingsAttribute.java b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/bytecode/CallinMethodMappingsAttribute.java
index 608f51d..ad324b3 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/bytecode/CallinMethodMappingsAttribute.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/bytecode/CallinMethodMappingsAttribute.java
@@ -524,9 +524,11 @@
ReferenceBinding currentType = roleBinding;
char[] roleSignature = mapping._roleSignature;
// generics:
- ReferenceBinding tsuperRoleBinding = findTSuperTypeFromModel(roleBinding.roleModel, superDeclaringType.getBinding());
- if (tsuperRoleBinding.isParameterizedType())
- roleSignature = superDeclaringType.substituteSignature((ParameterizedTypeBinding)tsuperRoleBinding, mapping._roleSelector, roleSignature);
+ if (superDeclaringType != null) {
+ ReferenceBinding tsuperRoleBinding = findTSuperTypeFromModel(roleBinding.roleModel, superDeclaringType.getBinding());
+ if (tsuperRoleBinding.isParameterizedType())
+ roleSignature = superDeclaringType.substituteSignature((ParameterizedTypeBinding)tsuperRoleBinding, mapping._roleSelector, roleSignature);
+ }
if (result.callinModifier == TerminalTokens.TokenNamereplace) {
// ignore generalized return by truncating the signature:
int closePos = CharOperation.indexOf(')', roleSignature);
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/bytecode/StaticReplaceBindingsAttribute.java b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/bytecode/StaticReplaceBindingsAttribute.java
index a19ff58..2d2e503 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/bytecode/StaticReplaceBindingsAttribute.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/bytecode/StaticReplaceBindingsAttribute.java
@@ -31,6 +31,7 @@
import org.eclipse.objectteams.otdt.internal.core.compiler.ast.MethodSpec;
import org.eclipse.objectteams.otdt.internal.core.compiler.lookup.RoleTypeBinding;
import org.eclipse.objectteams.otdt.internal.core.compiler.model.ModelElement;
+import org.eclipse.objectteams.otdt.internal.core.compiler.model.TypeModel;
/**
* MIGRATION_STATE: complete.
@@ -253,7 +254,8 @@
/**
* Merge two attributes encoding method mappings from different roles of the same team.
*/
- public void merge(ModelElement model, AbstractAttribute superDeclaringType, ModelElement otherModel)
+ @Override
+ public void merge(ModelElement model, AbstractAttribute superDeclaringType, TypeModel sourceDeclaringType)
{
assert superDeclaringType instanceof StaticReplaceBindingsAttribute;
StaticReplaceBindingsAttribute otherSRBA = (StaticReplaceBindingsAttribute)superDeclaringType;