EObject currentContainer = current.eContainer(); while (currentContainer != null) { if (currentContainer instanceof XMemberFeatureCall || currentContainer instanceof XFeatureCall) { currentContainer = current.eContainer(); } else { return current;
private boolean isOuterTypeLiteral(XAbstractFeatureCall featureCall) { if (featureCall.eContainingFeature() == XbasePackage.Literals.XMEMBER_FEATURE_CALL__MEMBER_CALL_TARGET) { XMemberFeatureCall container = (XMemberFeatureCall) featureCall.eContainer(); if (container.isTypeLiteral()) { return true; } } return false; }
@Override protected IFeatureLinkingCandidate createResolvedLink(XAbstractFeatureCall featureCall, JvmIdentifiableElement resolvedTo) { if (isImplicitReceiver(featureCall)) { return new ResolvedImplicitReceiver((XAbstractFeatureCall) featureCall.eContainer(), featureCall, this); } if (isImplicitFirstArgument(featureCall)) { return new ResolvedImplicitFirstArgument((XAbstractFeatureCall) featureCall.eContainer(), featureCall, this); } return super.createResolvedLink(featureCall, resolvedTo); }
public boolean isDefiniteTypeLiteral(XAbstractFeatureCall featureCall) { if (featureCall.isExplicitOperationCallOrBuilderSyntax()) return false; if (!featureCall.getTypeArguments().isEmpty()) return false; if (featureCall.eContainingFeature() == XbasePackage.Literals.XMEMBER_FEATURE_CALL__MEMBER_CALL_TARGET) { XMemberFeatureCall container = (XMemberFeatureCall) featureCall.eContainer(); if (container.isExplicitStatic()) { return true; } return isDefiniteTypeLiteral(container); } return false; }
/** Replies the root feature call into a sequence of feature calls. * * @param featureCall the leaf feature call. * @return the root feature call. * @since 0.8.6 * @see #getRootFeatureCall(XAbstractFeatureCall, XExpression, List) */ public static XAbstractFeatureCall getRootFeatureCall(XAbstractFeatureCall featureCall) { final EObject container = featureCall.eContainer(); final XAbstractFeatureCall rootFeatureCall; if (container instanceof XMemberFeatureCall || container instanceof XFeatureCall) { rootFeatureCall = (XAbstractFeatureCall) getFirstContainerForPredicate(featureCall, it -> it.eContainer() != null && !(it.eContainer() instanceof XMemberFeatureCall || it.eContainer() instanceof XFeatureCall)); } else { rootFeatureCall = featureCall; } return rootFeatureCall; }
public XAbstractFeatureCall getRootTypeLiteral(XAbstractFeatureCall featureCall) { if (featureCall.isTypeLiteral()) { return featureCall; } if (featureCall.isPackageFragment()) { return getRootTypeLiteral((XAbstractFeatureCall) featureCall.eContainer()); } if (featureCall.getFeature() == null || featureCall.getFeature().eIsProxy()) { // syntactic check if (featureCall instanceof XFeatureCall || featureCall instanceof XMemberFeatureCall) { if (!isPotentialTypeLiteral(featureCall, null)) { return null; } if (featureCall instanceof XMemberFeatureCall) { return doGetRootTypeLiteral((XMemberFeatureCall) featureCall); } if (featureCall instanceof XFeatureCall) { if (featureCall.eContainingFeature() == XbasePackage.Literals.XMEMBER_FEATURE_CALL__MEMBER_CALL_TARGET) { return doGetRootTypeLiteral((XMemberFeatureCall) featureCall.eContainer()); } } } } return null; }