diff options
author | Stephan Herrmann | 2010-12-11 16:46:40 +0000 |
---|---|---|
committer | Stephan Herrmann | 2010-12-11 16:46:40 +0000 |
commit | 0e04a0cb7af593e5748cb3b79166b72f0954176d (patch) | |
tree | 4ae075e987996ac9288dd8c20ec82ad40ce5daa3 /org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler | |
parent | ca60415bf740230da49ebffe92ee89cf885117c1 (diff) | |
download | org.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.java | 4 | ||||
-rw-r--r-- | org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/MethodVerifier.java | 9 |
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}; |