Fix for new test test2215_arrayLifting6(): array lifter needs an ifc-part if team is nested (and a role).
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/lifting/ArrayTranslations.java b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/lifting/ArrayTranslations.java
index 864dbc2..26afb25 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/lifting/ArrayTranslations.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/lifting/ArrayTranslations.java
@@ -23,6 +23,7 @@
import org.eclipse.jdt.core.compiler.CharOperation;
import org.eclipse.jdt.internal.compiler.ast.*;
import org.eclipse.jdt.internal.compiler.ast.Expression.DecapsulationState;
+import org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
import org.eclipse.jdt.internal.compiler.impl.Constant;
import org.eclipse.jdt.internal.compiler.lookup.BlockScope;
import org.eclipse.jdt.internal.compiler.lookup.MethodBinding;
@@ -32,6 +33,7 @@
import org.eclipse.objectteams.otdt.core.compiler.IOTConstants;
import org.eclipse.objectteams.otdt.core.exceptions.InternalCompilerError;
import org.eclipse.objectteams.otdt.internal.core.compiler.model.TeamModel;
+import org.eclipse.objectteams.otdt.internal.core.compiler.util.AstConverter;
import org.eclipse.objectteams.otdt.internal.core.compiler.util.AstEdit;
import org.eclipse.objectteams.otdt.internal.core.compiler.util.AstGenerator;
@@ -145,8 +147,15 @@
MethodDeclaration transformMethod =
generateTransformArrayMethod(teamDecl, transformMethodName, providedType.dimensions());
+ if (teamDecl.isRole())
+ transformMethod.modifiers |= ClassFileConstants.AccPublic;
AstEdit.addMethod(teamDecl, transformMethod);
methodBinding = transformMethod.binding;
+ if (teamDecl.isRole()) {
+ TypeDeclaration ifcPart = teamDecl.getRoleModel().getInterfaceAst();
+ MethodDeclaration ifcMethod = AstConverter.genIfcMethodFromBinding(ifcPart.enclosingType, methodBinding, new AstGenerator(transformMethod));
+ AstEdit.addMethod(ifcPart, ifcMethod);
+ }
}
return methodBinding;
}