protected IEObjectDescription getDeepLocalElement(IFeatureScopeSession session, QualifiedName name) { while(session != null) { IEObjectDescription element = session.getLocalElement(name); if (element != null) { return element; } session = session.getNextCaptureLayer(); } return null; }
protected List<IEObjectDescription> getDeepLocalElements(IFeatureScopeSession session, QualifiedName name) { List<IEObjectDescription> result = Lists.newArrayList(); while(session != null) { IEObjectDescription element = session.getLocalElement(name); if (element != null) { result.add(element); } session = session.getNextCaptureLayer(); } return result; }
protected IScope createImplicitFeatureCallAndLocalVariableScope(EObject context, IScope parent, IFeatureScopeSession session, IResolvedTypes resolvedTypes) { IFeatureScopeSession nextCaptureLayer = session.getNextCaptureLayer(); if (nextCaptureLayer != null) { parent = createImplicitFeatureCallAndLocalVariableScope(context, parent, nextCaptureLayer, resolvedTypes); } IScope implicitReceivers = createImplicitFeatureCallScope(context, parent, session, resolvedTypes); IScope constructors = createConstructorDelegates(context, implicitReceivers, session, resolvedTypes); IScope localVariables = createLocalVariableScope(context, constructors, session, resolvedTypes); return localVariables; }
protected IScope createStaticExtensionsScope(XExpression receiver, LightweightTypeReference receiverType, EObject featureCall, IScope parent, IFeatureScopeSession session, IResolvedTypes resolvedTypes) { IFeatureScopeSession nextCaptureLayer = session.getNextCaptureLayer(); if (nextCaptureLayer != null) { parent = createStaticExtensionsScope(receiver, receiverType, featureCall, parent, nextCaptureLayer, resolvedTypes); } IScope result = parent; if (receiver == null) { // 'this' is a valid implicit first argument, e.g. implementations of Iterable may use #filter on themselves result = createImplicitExtensionScope(THIS, featureCall, session, resolvedTypes, result); // 'it' has a higher priority than 'this' as implicit first argument result = createImplicitExtensionScope(IT, featureCall, session, resolvedTypes, result); return result; } else { if (receiverType == null) { throw new IllegalStateException("Unknown receiver type"); } result = createStaticExtensionsScope(featureCall, receiver, receiverType, false, parent, session); } return result; }
protected IScope createDynamicExtensionsScope(XExpression firstArgument, LightweightTypeReference firstArgumentType, EObject featureCall, IScope parent, IFeatureScopeSession captureLayer, IFeatureScopeSession session, IResolvedTypes resolvedTypes) { IFeatureScopeSession nextCaptureLayer = captureLayer.getNextCaptureLayer(); if (nextCaptureLayer != null) { parent = createDynamicExtensionsScope(firstArgument, firstArgumentType, featureCall, parent, nextCaptureLayer, session, resolvedTypes); } List<ExpressionBucket> extensionProviders = captureLayer.getExtensionProviders(); if (extensionProviders.isEmpty()) { return parent; } IScope result = parent; if (firstArgument == null) { result = createDynamicExtensionsScope(THIS, featureCall, captureLayer, session, resolvedTypes, result, true); result = createDynamicExtensionsScope(IT, featureCall, captureLayer, session, resolvedTypes, result, false); return result; } else { result = createDynamicExtensionsScope(featureCall, firstArgument, firstArgumentType, false, parent, captureLayer); } return result; }