View | Details | Raw Unified | Return to bug 106834 | Differences between
and this patch

Collapse All | Expand All

(-)dom/org/eclipse/jdt/core/dom/BindingComparator.java (-9 / +15 lines)
Lines 209-217 Link Here
209
					&& wildcardBinding.boundKind == wildcardBinding2.boundKind;
209
					&& wildcardBinding.boundKind == wildcardBinding2.boundKind;
210
				
210
				
211
			case Binding.TYPE_PARAMETER :
211
			case Binding.TYPE_PARAMETER :
212
				if (visitedTypes.contains(typeBinding)) return true;
213
				visitedTypes.add(typeBinding);
214
				
215
				if (!(typeBinding2.isTypeVariable())) {
212
				if (!(typeBinding2.isTypeVariable())) {
216
					return false;
213
					return false;
217
				}
214
				}
Lines 221-237 Link Here
221
					}
218
					}
222
					CaptureBinding captureBinding = (CaptureBinding) typeBinding;
219
					CaptureBinding captureBinding = (CaptureBinding) typeBinding;
223
					CaptureBinding captureBinding2 = (CaptureBinding) typeBinding2;
220
					CaptureBinding captureBinding2 = (CaptureBinding) typeBinding2;
224
					return captureBinding.position == captureBinding2.position
221
					if (captureBinding.position == captureBinding2.position) {
225
						&& isEqual(captureBinding.wildcard, captureBinding2.wildcard, visitedTypes)
222
						if (visitedTypes.contains(typeBinding)) return true;
226
						&& isEqual(captureBinding.sourceType, captureBinding2.sourceType, visitedTypes);
223
						visitedTypes.add(typeBinding);
224
						
225
						return isEqual(captureBinding.wildcard, captureBinding2.wildcard, visitedTypes)
226
							&& isEqual(captureBinding.sourceType, captureBinding2.sourceType, visitedTypes);
227
					}
228
					return false;
227
				}
229
				}
228
				TypeVariableBinding typeVariableBinding = (TypeVariableBinding) typeBinding;
230
				TypeVariableBinding typeVariableBinding = (TypeVariableBinding) typeBinding;
229
				TypeVariableBinding typeVariableBinding2 = (TypeVariableBinding) typeBinding2;
231
				TypeVariableBinding typeVariableBinding2 = (TypeVariableBinding) typeBinding2;
230
				return CharOperation.equals(typeVariableBinding.sourceName, typeVariableBinding2.sourceName)
232
				if (CharOperation.equals(typeVariableBinding.sourceName, typeVariableBinding2.sourceName)) {
231
					&& isEqual(typeVariableBinding.declaringElement, typeVariableBinding2.declaringElement, visitedTypes)
233
					if (visitedTypes.contains(typeBinding)) return true;
234
					visitedTypes.add(typeBinding);
235
236
					return isEqual(typeVariableBinding.declaringElement, typeVariableBinding2.declaringElement, visitedTypes)
232
					&& isEqual(typeVariableBinding.superclass(), typeVariableBinding2.superclass(), visitedTypes)
237
					&& isEqual(typeVariableBinding.superclass(), typeVariableBinding2.superclass(), visitedTypes)
233
					&& isEqual(typeVariableBinding.superInterfaces(), typeVariableBinding2.superInterfaces(), visitedTypes);
238
					&& isEqual(typeVariableBinding.superInterfaces(), typeVariableBinding2.superInterfaces(), visitedTypes);
234
			
239
				}
240
				return false;
235
			case Binding.GENERIC_TYPE :
241
			case Binding.GENERIC_TYPE :
236
				if (!typeBinding2.isGenericType()) {
242
				if (!typeBinding2.isGenericType()) {
237
					return false;
243
					return false;

Return to bug 106834