protected boolean isIllegallyDeclaredException(LightweightTypeReference exception, List<IResolvedOperation> overriddenAndImplemented) { for(IResolvedOperation operation: overriddenAndImplemented) { if (operation.getOverrideCheckResult().getDetails().contains(OverrideCheckDetails.EXCEPTION_MISMATCH)) { List<LightweightTypeReference> inheritedExceptions = operation.getResolvedExceptions(); if (inheritedExceptions.isEmpty()) { return true; } boolean isDeclared = false; for(LightweightTypeReference inheritedException: inheritedExceptions) { if (inheritedException.isAssignableFrom(exception)) { isDeclared = true; break; } } if (!isDeclared) { return true; } } } return false; }
protected boolean isOverridden(JvmOperation operation, Collection<AbstractResolvedOperation> processedOperations) { for(AbstractResolvedOperation processed: processedOperations) { if (overrideTester.isSubsignature(processed, operation, false).isOverridingOrImplementing()) { return true; } } return false; }
OverrideTester overrideTester = _getOverrideTester(candidate); IOverrideCheckResult checkResult = overrideTester.isSubsignature(candidate, operation, false); if (checkResult.getDetails().contains(OverrideCheckDetails.DEFAULT_IMPL_CONFLICT)) { if (!isSuperClassBranch && superClassBranchOperations.containsKey(simpleName)) { iterator.remove(); conflictingOperations.add(candidate); } else if (checkResult.isOverridingOrImplementing()) { return false;
List<IResolvedOperation> exceptionMismatch = null; for (final IResolvedOperation inherited: allInherited) { if (inherited.getOverrideCheckResult().hasProblems()) { overrideProblems = true; final EnumSet<OverrideCheckDetails> details = inherited.getOverrideCheckResult().getDetails(); if (details.contains(OverrideCheckDetails.IS_FINAL)) { error(MessageFormat.format(Messages.SARLValidator_43, inherited.getSimpleSignature()), final JvmTypeReference inheritedReturnType = inherited.getOverrideCheckResult().getGivenOperation().getReturnType(); final LightweightTypeReference resolvedReturnType = inherited.getOverrideCheckResult().getThisOperation().getResolvedReturnType(); final String signature = inherited.getSimpleSignature(); final EStructuralFeature sourceReturnTypeFeature = returnTypeFeature(sourceElement);
List<IResolvedOperation> exceptionMismatch = null; for(IResolvedOperation inherited: allInherited) { if (inherited.getOverrideCheckResult().hasProblems()) { overrideProblems = true; EnumSet<OverrideCheckDetails> details = inherited.getOverrideCheckResult().getDetails(); if (details.contains(OverrideCheckDetails.IS_FINAL)) { error("Attempt to override final method " + inherited.getSimpleSignature(), sourceElement,
OverrideTester overrideTester = candidate.getOverrideTester(); IOverrideCheckResult checkResult = overrideTester.isSubsignature(candidate, operation, false); if (checkResult.getDetails().contains(OverrideCheckDetails.DEFAULT_IMPL_CONFLICT)) { } else if (checkResult.isOverridingOrImplementing()) { return false;
@Override public List<IResolvedOperation> getOverriddenAndImplementedMethods() { if (validOverrides != null) return validOverrides; List<JvmOperation> candidates = getOverriddenAndImplementedMethodCandidates(); if (candidates.isEmpty()) return Collections.emptyList(); List<IResolvedOperation> result = Lists.newArrayListWithCapacity(candidates.size()); for(JvmOperation candidate: candidates) { // we know that our candidates are computed from the hierarchy // thus there is no need to check the declarator for inheritance IOverrideCheckResult checkResult = getOverrideTester().isSubsignature(this, candidate, false); if (checkResult.isOverridingOrImplementing()) { result.add(createResolvedOperationInHierarchy(candidate, checkResult)); } } return validOverrides = Collections.unmodifiableList(result); }
resolvedFeatures.getDeclaredOperations(erasureSignature); for (IResolvedOperation localOperation: declaredOperationsWithSameErasure) { if (!localOperation.isOverridingOrImplementing(operation.getDeclaration()).isOverridingOrImplementing()) { EObject source = findPrimarySourceElement(localOperation); if (flaggedOperations.add(source)) {