@Override public List<IResolvedOperation> apply(String erasedSignature) { return resolvedFeatures.getDeclaredOperations(erasedSignature); } }, flaggedOperations);
protected void doCheckFunctionOverrides(ResolvedFeatures resolvedFeatures, Set<EObject> flaggedOperations) { for(IResolvedOperation operation: resolvedFeatures.getDeclaredOperations()) { doCheckFunctionOverrides(operation, flaggedOperations); } }
public List<IResolvedOperation> getDeclaredOperations(String erasedSignature) { if (declaredOperationsPerErasure != null) { return declaredOperationsPerErasure.get(erasedSignature); } return (declaredOperationsPerErasure = computeIndex(getDeclaredOperations())).get(erasedSignature); }
protected List<IResolvedOperation> computeAllOperations() { JvmType rawType = getRawType(); if (!(rawType instanceof JvmDeclaredType)) { return Collections.emptyList(); } Multimap<String, AbstractResolvedOperation> processedOperations = LinkedHashMultimap.create(); for (IResolvedOperation resolvedOperation : getDeclaredOperations()) { processedOperations.put(resolvedOperation.getDeclaration().getSimpleName(), (AbstractResolvedOperation) resolvedOperation); } if (targetVersion.isAtLeast(JavaVersion.JAVA8)) { computeAllOperationsFromSortedSuperTypes((JvmDeclaredType) rawType, processedOperations); } else { Set<JvmType> processedTypes = Sets.newHashSet(rawType); computeAllOperationsFromSuperTypes((JvmDeclaredType) rawType, processedOperations, processedTypes); } // make sure the declared operations are the first in the list List<IResolvedOperation> result = new ArrayList<IResolvedOperation>(processedOperations.size()); result.addAll(getDeclaredOperations()); for (AbstractResolvedOperation operation : processedOperations.values()) { if (operation.getDeclaration().getDeclaringType() != rawType) { result.add(operation); } } return Collections.unmodifiableList(result); }
protected void doCheckDuplicateExecutables(JvmGenericType inferredType, final ResolvedFeatures resolvedFeatures, Set<EObject> flaggedOperations) { List<IResolvedOperation> declaredOperations = resolvedFeatures.getDeclaredOperations(); doCheckDuplicateExecutables(inferredType, declaredOperations, new Function<String, List<IResolvedOperation>>() { @Override public List<IResolvedOperation> apply(String erasedSignature) { return resolvedFeatures.getDeclaredOperations(erasedSignature); } }, flaggedOperations); final List<IResolvedConstructor> declaredConstructors = resolvedFeatures.getDeclaredConstructors(); doCheckDuplicateExecutables(inferredType, declaredConstructors, new Function<String, List<IResolvedConstructor>>() { @Override public List<IResolvedConstructor> apply(String erasedSignature) { if (declaredConstructors.size() == 1) { if (erasedSignature.equals(declaredConstructors.get(0).getResolvedErasureSignature())) { return declaredConstructors; } return Collections.emptyList(); } List<IResolvedConstructor> result = Lists.newArrayListWithCapacity(declaredConstructors.size()); for(IResolvedConstructor constructor: declaredConstructors) { if (erasedSignature.equals(constructor.getResolvedErasureSignature())) { result.add(constructor); } } return result; } }, flaggedOperations); }
/** * Since for fields we generate getter/setter, checking duplicate Java methods * will automatically check for duplicate fields as well. */ private void checkDuplicateSpecifications(final JvmGenericType inferredType) { final ResolvedFeatures inferredFeatures = this._emfParsleyDslGuiceModuleHelper.getJavaResolvedFeatures(inferredType); final List<IResolvedOperation> methods = inferredFeatures.getDeclaredOperations(); final ListMultimap<String, JvmOperation> map = this.<String, JvmOperation>duplicatesMultimap(); final HashSet<EObject> errorSourceSeen = CollectionLiterals.<EObject>newHashSet(); for (final IResolvedOperation m : methods) { map.put(this._emfParsleyDslGuiceModuleHelper.getJavaMethodResolvedErasedSignature(m), m.getDeclaration()); } final Procedure1<JvmOperation> _function = new Procedure1<JvmOperation>() { @Override public void apply(final JvmOperation d) { final EObject source = IterableExtensions.<EObject>head(EmfParsleyDslValidator.this._iJvmModelAssociations.getSourceElements(d)); boolean _add = errorSourceSeen.add(source); if (_add) { EmfParsleyDslValidator.this.error( "Duplicate element", source, null, EmfParsleyDslValidator.DUPLICATE_ELEMENT); } } }; this.<JvmOperation>checkDuplicates(map, _function); }
@Override public Iterable<? extends ResolvedMethod> getDeclaredResolvedMethods() { final Function1<IResolvedOperation, ResolvedMethod> _function = (IResolvedOperation it) -> { return this.getCompilationUnit().toResolvedMethod(it); }; return ListExtensions.<IResolvedOperation, ResolvedMethod>map(this.getCompilationUnit().getOverrideHelper().getResolvedFeatures(this.getDelegate()).getDeclaredOperations(), _function); }
String erasureSignature = operation.getResolvedErasureSignature(); List<IResolvedOperation> declaredOperationsWithSameErasure = resolvedFeatures.getDeclaredOperations(erasureSignature); for (IResolvedOperation localOperation: declaredOperationsWithSameErasure) { if (!localOperation.isOverridingOrImplementing(operation.getDeclaration()).isOverridingOrImplementing()) {