@Override public boolean overrides(IMethodBinding arg0) { return originalBinding.overrides(arg0); }
private static boolean addOverridenMethods( IMethodBinding overridingMethod, ITypeBinding superType, Set<IMethodBinding> results) { for (IMethodBinding methodFromType : superType.getDeclaredMethods()) { if (overridingMethod.overrides(methodFromType) && !results.add(methodFromType)) { // type has already been visited return true; } } return false; }
private boolean isSameMethodBinding(IMethodBinding binding1, IMethodBinding binding2) { return binding1 != null && binding2 != null && (binding1.equals(binding2) || binding1.overrides(binding2) || binding2.overrides(binding1) // this is a really expensive check. Do it at the very end || areOverridingSameMethod(binding1, binding2)); }
public boolean visit(SimpleName node) { IBinding binding= node.resolveBinding(); if (binding == null || binding.getKind() != fBinding.getKind()) { return false; } binding= getDeclaration(binding); if (fBinding == binding) { fResult.add(node); } else if (binding.getKind() == IBinding.METHOD) { IMethodBinding curr= (IMethodBinding) binding; IMethodBinding methodBinding= (IMethodBinding) fBinding; if (methodBinding.overrides(curr) || curr.overrides(methodBinding)) { fResult.add(node); } } return false; }
@Override public boolean visit(SimpleName node) { IBinding binding= node.resolveBinding(); if (binding == null) { return false; } binding= getDeclaration(binding); if (fBinding == binding) { fResult.add(node); } else if (binding.getKind() != fBinding.getKind()) { return false; } else if (binding.getKind() == IBinding.METHOD) { IMethodBinding curr= (IMethodBinding) binding; IMethodBinding methodBinding= (IMethodBinding) fBinding; if (methodBinding.overrides(curr) || curr.overrides(methodBinding)) { fResult.add(node); } } return false; }
@Override public boolean visit(SimpleName node) { if (node.getAST().apiLevel() >= AST.JLS10 && node.isVar()) { return false; } IBinding binding= node.resolveBinding(); if (binding == null) { return false; } binding= getDeclaration(binding); if (fBinding == binding) { fResult.add(node); } else if (binding.getKind() != fBinding.getKind()) { return false; } else if (binding.getKind() == IBinding.METHOD) { IMethodBinding curr= (IMethodBinding) binding; IMethodBinding methodBinding= (IMethodBinding) fBinding; if (methodBinding.overrides(curr) || curr.overrides(methodBinding)) { fResult.add(node); } } return false; }
class TypeHierarchyVisitor extends ASTVisitor { public boolean visit(MethodDeclaration node) { // e.g. foo() IMethodBinding methodBinding = node.resolveBinding(); // e.g. class B ITypeBinding classBinding = methodBinding.getDeclaringClass(); // e.g. class TestOverride ITypeBinding superclassBinding = classBinding.getSuperclass(); if (superclassBinding != null) { for (IMethodBinding parentBinding: superclassBinding.getDeclaredMethods()) { if (methodBinding.overrides(parentBinding)) { // now you know `node` overrides a method and // you can add the `super` statement } } } return super.visit(node); } }
private IMethodBinding internalFindOverride(final IMethodBinding method, final ITypeBinding superType, final boolean onlyPrimarylevel) { final Function1<IMethodBinding, Boolean> _function = (IMethodBinding it) -> { return Boolean.valueOf(method.overrides(it)); }; final Iterable<IMethodBinding> superClassOverride = IterableExtensions.<IMethodBinding>filter(((Iterable<IMethodBinding>)Conversions.doWrapArray(superType.getDeclaredMethods())), _function); int _size = IterableExtensions.size(superClassOverride); boolean _equals = (_size == 1); if (_equals) { return ((IMethodBinding[])Conversions.unwrapArray(superClassOverride, IMethodBinding.class))[0]; } else { if ((!onlyPrimarylevel)) { return this.findOverride(method, superType); } else { return null; } } }
private static void getMethodInClassOrSuperclass(IMethodBinding met, ITypeBinding klass, boolean superclassonly, HashMap<ITypeBinding, IMethodBinding> overridden) { if (!superclassonly) { for (IMethodBinding ourmet : klass.getDeclaredMethods()) if (met.overrides(ourmet)) { overridden.put(ourmet.getMethodDeclaration().getReturnType(), ourmet.getMethodDeclaration()); break; // there can only be one per class so don't bother looking for more } } for (ITypeBinding iface : klass.getInterfaces()) getMethodInClassOrSuperclass(met, iface, false, overridden); ITypeBinding superclass = klass.getSuperclass(); if (superclass != null) getMethodInClassOrSuperclass(met, superclass, false, overridden); }
private void fillOverrides(IMethodBinding node, ITypeBinding parent) { if (node == null || parent == null) { insert(messages, values.constructor(DATATYPE_RASCAL_MESSAGE_ERROR_NODE_TYPE, values.string("parent or method binding is null, not proceeding with fillOverrides"), getSourceLocation(compilUnit.findDeclaringNode(node)))); return; } List<ITypeBinding> parentClass = new ArrayList<ITypeBinding>(); parentClass.addAll(Arrays.asList(parent.getInterfaces())); parentClass.add(parent.getSuperclass()); for (ITypeBinding parentBinding: parentClass) { if (parentBinding == null) { return; } for (IMethodBinding parentMethod: parentBinding.getDeclaredMethods()) { if (node.overrides(parentMethod) && node.isSubsignature(parentMethod)) { insert(methodOverrides, resolveBinding(node), resolveBinding(parentMethod)); } } fillOverrides(node, parentBinding); } }
return overriddenMethod != null && methodBinding.overrides(overriddenMethod);
if (superBinding instanceof IMethodBinding) { final IMethodBinding extended= (IMethodBinding) superBinding; if (fEnclosingMethod != null && fEnclosingMethod.overrides(extended)) return true; final ITypeBinding declaringBinding= extended.getDeclaringClass();
if (superBinding instanceof IMethodBinding) { final IMethodBinding extended= (IMethodBinding) superBinding; if (fEnclosingMethod != null && fEnclosingMethod.overrides(extended)) return true; final ITypeBinding declaringBinding= extended.getDeclaringClass();
if (superBinding instanceof IMethodBinding) { final IMethodBinding extended= (IMethodBinding) superBinding; if (fEnclosingMethod != null && fEnclosingMethod.overrides(extended)) return true; final ITypeBinding declaringBinding= extended.getDeclaringClass();
&& declMethodBinding.overrides(bodyMethodBinding) && !hasSignificantAnnotations(declMethodBinding) && haveSameModifiers(bodyMethodBinding, declMethodBinding)
if (fOriginalMethod.getName().equals(candidate.getName()) && !fOriginalMethod.overrides(candidate)) { ITypeBinding[] originalParameterTypes= fOriginalMethod.getParameterTypes(); ITypeBinding[] candidateParameterTypes= candidate.getParameterTypes();
if (fOriginalMethod.getName().equals(candidate.getName()) && !fOriginalMethod.overrides(candidate)) { ITypeBinding[] originalParameterTypes= fOriginalMethod.getParameterTypes(); ITypeBinding[] candidateParameterTypes= candidate.getParameterTypes();