protected XAbstractFeatureCall createExtensionProvider(JvmIdentifiableElement thisFeature, JvmField field) { if (field.isStatic()) { XFeatureCall extensionProvider = getXbaseFactory().createXFeatureCall(); extensionProvider.setFeature(field); return extensionProvider; } else { XMemberFeatureCall extensionProvider = getXbaseFactory().createXMemberFeatureCall(); extensionProvider.setFeature(field); XFeatureCall thisAccess = getXbaseFactory().createXFeatureCall(); thisAccess.setFeature(thisFeature); extensionProvider.setMemberCallTarget(thisAccess); return extensionProvider; } }
/** Create the extension provider dedicated to the access to the used capacity functions. * * @param thisFeature the current object. * @param field the extension field. * @return the SARL capacity extension provider, or {@code null}. */ protected XAbstractFeatureCall createSarlCapacityExtensionProvider(JvmIdentifiableElement thisFeature, JvmField field) { // For capacity call redirection if (thisFeature instanceof JvmDeclaredType) { final JvmAnnotationReference capacityAnnotation = this.annotationLookup.findAnnotation(field, ImportedCapacityFeature.class); if (capacityAnnotation != null) { final String methodName = Utils.createNameForHiddenCapacityImplementationCallingMethodFromFieldName( field.getSimpleName()); final JvmOperation callerOperation = findOperation((JvmDeclaredType) thisFeature, methodName); if (callerOperation != null) { final XbaseFactory baseFactory = getXbaseFactory(); final XMemberFeatureCall extensionProvider = baseFactory.createXMemberFeatureCall(); extensionProvider.setFeature(callerOperation); final XFeatureCall thisAccess = baseFactory.createXFeatureCall(); thisAccess.setFeature(thisFeature); extensionProvider.setMemberCallTarget(thisAccess); return extensionProvider; } } } return null; }
superCall.setDocumentation(block.getAutoGeneratedActionString()); call.setFeature(superOperation); call.setMemberCallTarget(superCall.createReferenceToSuper()); final List<XExpression> arguments = call.getMemberCallArguments(); for (final IFormalParameterBuilder currentParam : sarlParams) {