protected BottomResolvedOperation createResolvedOperation(JvmOperation operation) { return new BottomResolvedOperation(operation, type, overrideTester); }
protected ResolvedOperationInHierarchy(JvmOperation declaration, BottomResolvedOperation bottom) { super(declaration, bottom.getContextType()); this.bottom = bottom; }
@Override public IOverrideCheckResult getOverrideCheckResult() { return new LazyOverrideCheckResult(this, getDeclaration(), OverrideCheckDetails.CURRENT) { @Override public boolean hasProblems() { return false; } @Override public EnumSet<OverrideCheckDetails> getDetails() { return EnumSet.of(OverrideCheckDetails.CURRENT); } }; } }
return null; BottomResolvedOperation resolvedOperation = new BottomResolvedOperation(operation, context, overrideTester); List<IResolvedOperation> overriddenMethods = resolvedOperation.getOverriddenAndImplementedMethods(); if (overriddenMethods.isEmpty()) return null;
BottomResolvedOperation resolvedOperation = new BottomResolvedOperation(operation, instantiatedType, overrideTester); List<JvmTypeParameter> typeParameters = resolvedOperation.getResolvedTypeParameters(); appendable.append("<"); for(int i = 0; i < typeParameters.size(); i++) { List<LightweightTypeReference> constraints = resolvedOperation.getResolvedTypeParameterConstraints(i); if (!constraints.isEmpty()) { appendable.append(" extends ");
@Override public IResolvedOperation getAsBottom() { JvmOperation operation = getDeclaration(); JvmDeclaredType declaringType = operation.getDeclaringType(); List<LightweightTypeReference> superTypes = getContextType().getAllSuperTypes(); for(LightweightTypeReference superType: superTypes) { if (superType.getType() == declaringType) { return new BottomResolvedOperation(operation, superType, getBottom().getOverrideTester()); } } throw new IllegalStateException(String.format("Could not find declaring type of method %s in hierarchy of %s", operation.getIdentifier(), getContextType().getIdentifier())); }
@Override public List<JvmTypeParameter> getResolvedTypeParameters() { return bottom.getResolvedTypeParameters(); }
@Override protected Map<JvmTypeParameter, LightweightMergedBoundTypeArgument> getContextTypeParameterMapping() { return getBottom().getContextTypeParameterMapping(); }
@Override protected Map<JvmTypeParameter, LightweightMergedBoundTypeArgument> computeContextTypeParameterMapping() { if (typeArguments.isEmpty()) { return super.computeContextTypeParameterMapping(); } Map<JvmTypeParameter, LightweightMergedBoundTypeArgument> result = Maps.newHashMap(super.computeContextTypeParameterMapping()); List<JvmTypeParameter> typeParameters = getDeclaration().getTypeParameters(); for(int i = 0; i < Math.min(typeParameters.size(), typeArguments.size()); i++) { result.put(typeParameters.get(i), new LightweightMergedBoundTypeArgument(typeArguments.get(i), VarianceInfo.INVARIANT)); } return result; }
protected OverrideTester getOverrideTester() { return getBottom().getOverrideTester(); }
@Override public List<JvmTypeParameter> getResolvedTypeParameters() { return getBottom().getTypeParameters(); }
throw new IllegalStateException("Cannot determine declaring type of operation: " + operation); BottomResolvedOperation resolvedOperation = new BottomResolvedOperation(operation, declaringType, overrideTester); List<IResolvedOperation> overriddenMethods = resolvedOperation.getOverriddenAndImplementedMethods(); if (overriddenMethods.isEmpty()) return null;
protected BottomResolvedOperation createResolvedOperation(JvmOperation operation, LightweightTypeReference context) { return new BottomResolvedOperation(operation, context, overrideTester); }