protected XExpression getImplicitReceiver() { return getExpression().getImplicitReceiver(); }
@Override protected Iterator<? extends EObject> getEObjectChildren(EObject eObject) { if(eObject instanceof XAbstractFeatureCall){ Iterable<EObject> result = eObject.eContents(); XAbstractFeatureCall featureCall = (XAbstractFeatureCall) eObject; XExpression implicitReceiver = featureCall.getImplicitReceiver(); if(implicitReceiver != null) result = Iterables.concat(result, Collections.singleton(implicitReceiver)); XExpression implicitFirstArgument = featureCall.getImplicitFirstArgument(); if(implicitFirstArgument != null) result = Iterables.concat(result, Collections.singleton(implicitFirstArgument)); return result.iterator(); } else return super.getEObjectChildren(eObject); } };
protected boolean isExtensionWithImplicitFirstArgument(XAbstractFeatureCall featureCall) { XExpression implicitReceiver = featureCall.getImplicitReceiver(); return implicitReceiver instanceof XAbstractFeatureCall && isExtension(((XAbstractFeatureCall) implicitReceiver).getFeature()); }
protected Object _assignValueTo(JvmOperation jvmOperation, XAbstractFeatureCall assignment, Object value, IEvaluationContext context, CancelIndicator indicator) { List<Object> argumentValues; if (assignment.getImplicitReceiver() != null && assignment instanceof XAssignment && ((XAssignment) assignment).getAssignable() != null) { XExpression implicitArgument = ((XAssignment) assignment).getAssignable(); Object argResult = internalEvaluate(implicitArgument, context, indicator); JvmTypeReference firstParameterType = jvmOperation.getParameters().get(0).getParameterType(); Object firstValue = coerceArgumentType(argResult, firstParameterType); JvmTypeReference secondParameterType = jvmOperation.getParameters().get(1).getParameterType(); Object secondValue = coerceArgumentType(value, secondParameterType); argumentValues = Lists.newArrayList(firstValue, secondValue); } else { JvmTypeReference secondParameterType = jvmOperation.getParameters().get(0).getParameterType(); Object coerced = coerceArgumentType(value, secondParameterType); argumentValues = Lists.newArrayList(coerced); } Object receiver = getReceiver(assignment, context, indicator); Object result = invokeOperation(jvmOperation, receiver, argumentValues, context, indicator); return result; }
return false; final XExpression implicit = call.getImplicitReceiver(); if (receiver == implicit) { output.add(thisKeyword.apply());
_matched=true; this.assertExpressionTypeIsResolved(((XExpression)content), resolvedTypes); XExpression _implicitReceiver = ((XAbstractFeatureCall)content).getImplicitReceiver(); boolean _tripleNotEquals = (_implicitReceiver != null); if (_tripleNotEquals) { this.assertExpressionTypeIsResolved(((XAbstractFeatureCall)content).getImplicitReceiver(), resolvedTypes);
protected IFeatureLinkingCandidate createResolvedLink(XAbstractFeatureCall featureCall, JvmIdentifiableElement resolvedTo) { ExpressionAwareStackedResolvedTypes resolvedTypes = this.resolvedTypes.pushTypes(featureCall); ExpressionTypeComputationState state = createExpressionComputationState(featureCall, resolvedTypes); FeatureLinkHelper helper = new FeatureLinkHelper(); XExpression syntacticReceiver = helper.getSyntacticReceiver(featureCall); if (syntacticReceiver != null) { AbstractTypeComputationState child = state.withNonVoidExpectation(); child.computeTypes(syntacticReceiver); } XExpression implicitReceiver = featureCall.getImplicitReceiver(); if (implicitReceiver != null) { AbstractTypeComputationState child = state.withNonVoidExpectation(); child.computeTypes(implicitReceiver); } XExpression implicitFirstArgument = featureCall.getImplicitFirstArgument(); if (implicitFirstArgument != null) { AbstractTypeComputationState child = state.withNonVoidExpectation(); child.computeTypes(implicitFirstArgument); } if (featureCall.isTypeLiteral() || featureCall.isPackageFragment()) { return new ResolvedTypeLiteral(featureCall, resolvedTo, getSingleExpectation(state), state); } return new ResolvedFeature(featureCall, resolvedTo, helper, getSingleExpectation(state), state); }