protected boolean canOverridingMethodDifferInErasure(MethodBinding overridingMethod, MethodBinding inheritedMethod) { if (overridingMethod.areParameterErasuresEqual(inheritedMethod)) return false; // no further change in signature is possible due to parameterization. if (overridingMethod.declaringClass.isRawType()) return false; // no parameterization is happening anyways. return true; } boolean canSkipInheritedMethods() {
protected boolean canOverridingMethodDifferInErasure(MethodBinding overridingMethod, MethodBinding inheritedMethod) { if (overridingMethod.areParameterErasuresEqual(inheritedMethod)) return false; // no further change in signature is possible due to parameterization. if (overridingMethod.declaringClass.isRawType()) return false; // no parameterization is happening anyways. return true; } boolean canSkipInheritedMethods() {
protected boolean canOverridingMethodDifferInErasure(MethodBinding overridingMethod, MethodBinding inheritedMethod) { if (overridingMethod.areParameterErasuresEqual(inheritedMethod)) return false; // no further change in signature is possible due to parameterization. if (overridingMethod.declaringClass.isRawType()) return false; // no parameterization is happening anyways. return true; } boolean canSkipInheritedMethods() {
protected boolean canOverridingMethodDifferInErasure(MethodBinding overridingMethod, MethodBinding inheritedMethod) { if (overridingMethod.areParameterErasuresEqual(inheritedMethod)) return false; // no further change in signature is possible due to parameterization. if (overridingMethod.declaringClass.isRawType()) return false; // no parameterization is happening anyways. return true; } boolean canSkipInheritedMethods() {
protected boolean canOverridingMethodDifferInErasure(MethodBinding overridingMethod, MethodBinding inheritedMethod) { if (overridingMethod.areParameterErasuresEqual(inheritedMethod)) return false; // no further change in signature is possible due to parameterization. if (overridingMethod.declaringClass.isRawType()) return false; // no parameterization is happening anyways. return true; } boolean canSkipInheritedMethods() {
protected boolean canOverridingMethodDifferInErasure(MethodBinding overridingMethod, MethodBinding inheritedMethod) { if (overridingMethod.areParameterErasuresEqual(inheritedMethod)) return false; // no further change in signature is possible due to parameterization. if (overridingMethod.declaringClass.isRawType()) return false; // no parameterization is happening anyways. return true; } boolean canSkipInheritedMethods() {
@Override protected boolean canOverridingMethodDifferInErasure(MethodBinding overridingMethod, MethodBinding inheritedMethod) { if (overridingMethod.areParameterErasuresEqual(inheritedMethod)) return false; // no further change in signature is possible due to parameterization. if (overridingMethod.declaringClass.isRawType()) return false; // no parameterization is happening anyways. return true; } @Override
protected boolean canOverridingMethodDifferInErasure(MethodBinding overridingMethod, MethodBinding inheritedMethod) { if (overridingMethod.areParameterErasuresEqual(inheritedMethod)) return false; // no further change in signature is possible due to parameterization. if (overridingMethod.declaringClass.isRawType()) return false; // no parameterization is happening anyways. return true; } boolean canSkipInheritedMethods() {
protected boolean canOverridingMethodDifferInErasure(MethodBinding overridingMethod, MethodBinding inheritedMethod) { if (overridingMethod.areParameterErasuresEqual(inheritedMethod)) return false; // no further change in signature is possible due to parameterization. if (overridingMethod.declaringClass.isRawType()) return false; // no parameterization is happening anyways. return true; } boolean canSkipInheritedMethods() {
protected boolean canOverridingMethodDifferInErasure(MethodBinding overridingMethod, MethodBinding inheritedMethod) { if (overridingMethod.areParameterErasuresEqual(inheritedMethod)) return false; // no further change in signature is possible due to parameterization. if (overridingMethod.declaringClass.isRawType()) return false; // no parameterization is happening anyways. return true; } boolean canSkipInheritedMethods() {
@Override public boolean isSubsignature(ExecutableType m1, ExecutableType m2) { MethodBinding methodBinding1 = (MethodBinding) ((ExecutableTypeImpl) m1)._binding; MethodBinding methodBinding2 = (MethodBinding) ((ExecutableTypeImpl) m2)._binding; if (!CharOperation.equals(methodBinding1.selector, methodBinding2.selector)) return false; return methodBinding1.areParameterErasuresEqual(methodBinding2) && methodBinding1.areTypeVariableErasuresEqual(methodBinding2); }
@Override public boolean isSubsignature(ExecutableType m1, ExecutableType m2) { MethodBinding methodBinding1 = (MethodBinding) ((ExecutableTypeImpl) m1)._binding; MethodBinding methodBinding2 = (MethodBinding) ((ExecutableTypeImpl) m2)._binding; if (!CharOperation.equals(methodBinding1.selector, methodBinding2.selector)) return false; return methodBinding1.areParameterErasuresEqual(methodBinding2) && methodBinding1.areTypeVariableErasuresEqual(methodBinding2); }
@Override public boolean isSubsignature(ExecutableType m1, ExecutableType m2) { MethodBinding methodBinding1 = (MethodBinding) ((ExecutableTypeImpl) m1)._binding; MethodBinding methodBinding2 = (MethodBinding) ((ExecutableTypeImpl) m2)._binding; if (!CharOperation.equals(methodBinding1.selector, methodBinding2.selector)) return false; return methodBinding1.areParameterErasuresEqual(methodBinding2) && methodBinding1.areTypeVariableErasuresEqual(methodBinding2); }
@Override public boolean isSubsignature(ExecutableType m1, ExecutableType m2) { MethodBinding methodBinding1 = (MethodBinding) ((ExecutableTypeImpl) m1)._binding; MethodBinding methodBinding2 = (MethodBinding) ((ExecutableTypeImpl) m2)._binding; if (!CharOperation.equals(methodBinding1.selector, methodBinding2.selector)) return false; return methodBinding1.areParameterErasuresEqual(methodBinding2) && methodBinding1.areTypeVariableErasuresEqual(methodBinding2); }
@Override public boolean isSubsignature(ExecutableType m1, ExecutableType m2) { MethodBinding methodBinding1 = (MethodBinding) ((ExecutableTypeImpl) m1)._binding; MethodBinding methodBinding2 = (MethodBinding) ((ExecutableTypeImpl) m2)._binding; if (!CharOperation.equals(methodBinding1.selector, methodBinding2.selector)) return false; return methodBinding1.areParameterErasuresEqual(methodBinding2) && methodBinding1.areTypeVariableErasuresEqual(methodBinding2); }
@Override public boolean isSubsignature(ExecutableType m1, ExecutableType m2) { MethodBinding methodBinding1 = (MethodBinding) ((ExecutableTypeImpl) m1)._binding; MethodBinding methodBinding2 = (MethodBinding) ((ExecutableTypeImpl) m2)._binding; if (!CharOperation.equals(methodBinding1.selector, methodBinding2.selector)) return false; return methodBinding1.areParameterErasuresEqual(methodBinding2) && methodBinding1.areTypeVariableErasuresEqual(methodBinding2); }
/** * @param baseMethod binding to compare against * @param methods the candidate methods * @return The method from the list of candidates that matches the name and original/erasure of * {@code methodBinding}, or {@code null} if none was found. */ private static MethodBinding findMatchingMethodBinding(MethodBinding baseMethod, MethodBinding[] methods) { for ( MethodBinding method : methods ) { if ( CharOperation.equals( method.selector, baseMethod.selector ) && ( method.original() == baseMethod || method.areParameterErasuresEqual( baseMethod ) ) ) { return method; } } return null; }
@Override public TypeMirror find(ReferenceBinding typeBinding, Binding memberBinding) { MethodBinding methodBinding = ((MethodBinding) memberBinding); for (MethodBinding method : typeBinding.methods()) { if (CharOperation.equals(method.selector, methodBinding.selector) && (method.original() == methodBinding || method.areParameterErasuresEqual(methodBinding))) { return TypesImpl.this._env.getFactory().newTypeMirror(method); } } return null; } });
boolean detectNameClash(MethodBinding current, MethodBinding inherited) { MethodBinding original = inherited.original(); // can be the same as inherited if (!current.areParameterErasuresEqual(original)) return false; if (this.environment.globalOptions.sourceLevel < ClassFileConstants.JDK1_7) { // with fix for http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6182950 // we now ignore return types when detecting name clashes // FYI for now we will only make this change when compliance is set to 1.7 or higher if (current.returnType.erasure() != original.returnType.erasure()) return false; } problemReporter(current).methodNameClash(current, inherited.declaringClass.isRawType() ? inherited : original); return true; } public boolean doesMethodOverride(MethodBinding method, MethodBinding inheritedMethod) {
boolean detectInheritedNameClash(MethodBinding inherited, MethodBinding otherInherited) { if (!inherited.areParameterErasuresEqual(otherInherited)) return false; if (this.environment.globalOptions.sourceLevel < ClassFileConstants.JDK1_7) { // with fix for http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6182950 // we now ignore return types when detecting name clashes // FYI for now we will only make this change when compliance is set to 1.7 or higher if (inherited.returnType.erasure() != otherInherited.returnType.erasure()) return false; } // skip it if otherInherited is defined by a subtype of inherited's declaringClass if (inherited.declaringClass.erasure() != otherInherited.declaringClass.erasure()) if (inherited.declaringClass.findSuperTypeOriginatingFrom(otherInherited.declaringClass) != null) return false; problemReporter().inheritedMethodsHaveNameClash(this.type, inherited, otherInherited); return true; } boolean detectNameClash(MethodBinding current, MethodBinding inherited) {