@Override public String toString() { return String.format("%s overridden by %s", getDeclaration().getIdentifier(), getBottom()); } }
protected int compare(JvmOperation o1, JvmOperation o2) { int params = o1.getParameters().size(); for (int i = 0; i < params; i++) { final JvmTypeReference p1 = o1.getParameters().get(i).getParameterType(); final JvmTypeReference p2 = o2.getParameters().get(i).getParameterType(); int distance1 = p1 == null ? Integer.MAX_VALUE : getMaxDistanceToObject(p1); int distance2 = p2 == null ? Integer.MAX_VALUE : getMaxDistanceToObject(p2); if (distance1 != distance2) { return distance2 - distance1; } } String identifier1 = o1.getIdentifier(); String parameterTypes1 = identifier1.substring(identifier1.indexOf('(')); String identifier2 = o2.getIdentifier(); String parameterTypes2 = identifier2.substring(identifier2.indexOf('(')); return parameterTypes1.compareTo(parameterTypes2); }
try { if (method == null) { throw new NoSuchMethodException("Could not find method " + operation.getIdentifier()); throw new IllegalStateException("Could not invoke method: " + operation.getIdentifier() + " on instance: " + receiver, e);
@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())); }
switch (type) { case METHOD: _switchResult = jvmOperation.getIdentifier(); break; case CLASS:
switch (type) { case METHOD: _switchResult = jvmOperation.getIdentifier(); break; case CLASS:
return simpleName; final FeatureReplacement replacement = matchFirstPattern(struct, operation.getIdentifier()); if (replacement != null) { if (replacement.hasReplacement()) {
@SuppressWarnings("unused") protected void _computeTypes(Map<JvmIdentifiableElement, ResolvedTypes> preparedResolvedTypes, ResolvedTypes resolvedTypes, IFeatureScopeSession featureScopeSession, JvmOperation operation) { ResolvedTypes childResolvedTypes = preparedResolvedTypes.get(operation); if (childResolvedTypes == null) { if (preparedResolvedTypes.containsKey(operation)) return; throw new IllegalStateException("No resolved type found. Operation was: " + operation.getIdentifier()); } else { preparedResolvedTypes.put(operation, null); } OperationBodyComputationState state = new OperationBodyComputationState(childResolvedTypes, operation.isStatic() ? featureScopeSession : featureScopeSession.toInstanceContext(), operation); addExtensionProviders(state, operation.getParameters()); markComputing(operation.getReturnType()); try { state.computeTypes(); } finally { unmarkComputing(operation.getReturnType()); } computeAnnotationTypes(childResolvedTypes, featureScopeSession, operation); computeLocalTypes(preparedResolvedTypes, childResolvedTypes, featureScopeSession, operation); mergeChildTypes(childResolvedTypes); }
if (preparedResolvedTypes.containsKey(operation)) return; throw new IllegalStateException("No resolved type found. Type was: " + operation.getIdentifier()); throw new IllegalStateException("No resolved type found. Type was: " + dispatchCase.getIdentifier()); throw new IllegalStateException("No resolved type found. Type was: " + dispatchCase.getIdentifier());
if(overriddenOperation != null) { if (isMorePrivateThan(syntheticDispatchMethod.getVisibility(), overriddenOperation.getVisibility())) { String msg = "Synthetic dispatch method reduces visibility of overridden method " + overriddenOperation.getIdentifier(); addDispatchError(type, dispatchOperations, msg, null, OVERRIDE_REDUCES_VISIBILITY);
private static boolean isCalledOperation(JvmOperation operation, List<InferredPrototype> prototypes) { final String container = operation.getDeclaringType().getQualifiedName(); for (final InferredPrototype prototype : prototypes) { if (Strings.equal(container, prototype.getActionName().getDeclaringType().getIdentifier()) && Strings.equal(operation.getSimpleName(), prototype.getActionName().getActionName())) { final String prefix = container + "."; //$NON-NLS-1$ final String operationId = operation.getIdentifier(); for (final ActionParameterTypes types : prototype.getParameterTypeAlternatives()) { String name = prefix + types.toActionPrototype(operation.getSimpleName()).toString(); if (Strings.equal(operationId, name)) { return true; } name = prefix + types.toRawActionPrototype(operation.getSimpleName()).toString(); if (Strings.equal(operationId, name)) { return true; } } } } return false; }