Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephan Herrmann2010-12-11 16:46:40 +0000
committerStephan Herrmann2010-12-11 16:46:40 +0000
commit0e04a0cb7af593e5748cb3b79166b72f0954176d (patch)
tree4ae075e987996ac9288dd8c20ec82ad40ce5daa3 /org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler
parentca60415bf740230da49ebffe92ee89cf885117c1 (diff)
downloadorg.eclipse.objectteams-0e04a0cb7af593e5748cb3b79166b72f0954176d.tar.gz
org.eclipse.objectteams-0e04a0cb7af593e5748cb3b79166b72f0954176d.tar.xz
org.eclipse.objectteams-0e04a0cb7af593e5748cb3b79166b72f0954176d.zip
test & additional fix for Bug 325397 - [compiler] CCE in generic nested team
Diffstat (limited to 'org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler')
-rw-r--r--org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/TypeParameter.java4
-rw-r--r--org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/MethodVerifier.java9
2 files changed, 11 insertions, 2 deletions
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/TypeParameter.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/TypeParameter.java
index 77877b8d3..87c0f87b2 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/TypeParameter.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/TypeParameter.java
@@ -25,6 +25,7 @@ import org.eclipse.objectteams.otdt.internal.core.compiler.ast.TypeAnchorReferen
import org.eclipse.objectteams.otdt.internal.core.compiler.lookup.ITeamAnchor;
import org.eclipse.objectteams.otdt.internal.core.compiler.lookup.ProblemAnchorBinding;
import org.eclipse.objectteams.otdt.internal.core.compiler.model.FieldModel;
+import org.eclipse.objectteams.otdt.internal.core.compiler.model.RoleModel;
/**
* OTDT changes:
@@ -68,6 +69,9 @@ public class TypeParameter extends AbstractVariableDeclaration {
&& this.binding != existingType
&& existingType.isValidBinding()
&& (existingType.kind() != Binding.TYPE_PARAMETER || !staticContext)) {
+//{ObjectTeams: could be equivalent type parameters of class/ifc-parts of the same role:
+ if (!RoleModel.areTypeParametersOfSameRole(this.binding, existingType))
+// SH}
scope.problemReporter().typeHiding(this, existingType);
}
}
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/MethodVerifier.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/MethodVerifier.java
index b25fa405f..04e8b577e 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/MethodVerifier.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/MethodVerifier.java
@@ -180,9 +180,9 @@ public static boolean areEqualRoleTypes(TypeBinding one, TypeBinding two, Refere
two = array2.leafComponentType();
}
if (one instanceof WeakenedTypeBinding)
- one = ((WeakenedTypeBinding)one).getStrongType();
+ one = ((WeakenedTypeBinding)one).weakenedType;
if (two instanceof WeakenedTypeBinding)
- two = ((WeakenedTypeBinding)two).getStrongType();
+ two = ((WeakenedTypeBinding)two).weakenedType;
if (one instanceof RoleTypeBinding) {
if (two instanceof UnresolvedReferenceBinding)
{
@@ -910,6 +910,11 @@ void computeInheritedMethods(ReferenceBinding superclass, ReferenceBinding[] sup
MethodBinding[] methods = superType.unResolvedMethods();
nextMethod : for (int m = methods.length; --m >= 0;) { // Interface methods are all abstract public
MethodBinding inheritedMethod = methods[m];
+//{ObjectTeams:
+ if ( inheritedMethod.original().problemId() == ProblemReasons.NotVisible
+ && MethodModel.isRoleMethodInheritedFromNonPublicRegular(inheritedMethod))
+ continue nextMethod;
+// SH}
MethodBinding[] existingMethods = (MethodBinding[]) this.inheritedMethods.get(inheritedMethod.selector);
if (existingMethods == null) {
existingMethods = new MethodBinding[] {inheritedMethod};

Back to the top