protected void computeLocalTypes( Map<JvmIdentifiableElement, ResolvedTypes> preparedResolvedTypes, ResolvedTypes resolvedTypes, IFeatureScopeSession featureScopeSession, JvmFeature feature) { for(JvmGenericType localClass: feature.getLocalClasses()) { computeTypes(preparedResolvedTypes, resolvedTypes, featureScopeSession, localClass); } }
protected void computeMemberTypes(Map<JvmIdentifiableElement, ResolvedTypes> preparedResolvedTypes, ResolvedTypes resolvedTypes, IFeatureScopeSession featureScopeSession, JvmDeclaredType type) { IFeatureScopeSession childSession = addExtensionsToMemberSession(resolvedTypes, featureScopeSession, type); List<JvmMember> members = type.getMembers(); for(int i = 0; i < members.size(); i++) { computeTypes(preparedResolvedTypes, resolvedTypes, childSession, members.get(i)); } }
/** * Computes the type of the given expression if it was not yet processed. * Used to compute types for expressions that are contained in heavily broken * models thus the model inferrer could not put them into proper contexts, or * for expressions that are dangling after an active annotation did its job in * an unexpected way. */ protected void computeDanglingExpressionType(ResolvedTypes resolvedTypes, IFeatureScopeSession featureScopeSession, XtendMember member, XExpression expression) { if (!allRootedExpressions.contains(expression)) { rootedInstances.add(expression); IFeatureScopeSession session = member == null || member.isStatic() ? featureScopeSession : featureScopeSession.toInstanceContext(); super.computeTypes(resolvedTypes, session, expression); } }
@Override protected void computeTypes(ResolvedTypes resolvedTypes, IFeatureScopeSession session) { EObject root = getRoot(); if (root instanceof XtendTypeDeclaration) { computeTypes(resolvedTypes, session, root); } else { super.computeTypes(resolvedTypes, session); } }
@Override protected void computeTypes(ResolvedTypes resolvedTypes, IFeatureScopeSession featureScopeSession, EObject element) { if (element instanceof XtendTypeDeclaration) { if (element == getRoot()) { computeTypes(resolvedTypes, featureScopeSession, (XtendTypeDeclaration) element); } } else if (element instanceof XtendMember) { computeTypes(resolvedTypes, featureScopeSession, (XtendMember) element); } else { super.computeTypes(resolvedTypes, featureScopeSession, element); } }
@Override protected void computeTypes(ResolvedTypes resolvedTypes, IFeatureScopeSession session) { EObject root = getRoot(); if (root instanceof JvmType) { Map<JvmIdentifiableElement, ResolvedTypes> preparedResolvedTypes = prepare(resolvedTypes, session); computeTypes(preparedResolvedTypes, resolvedTypes, session, root); } else { super.computeTypes(resolvedTypes, session); } }
protected void computeTypes(Map<JvmIdentifiableElement, ResolvedTypes> preparedResolvedTypes, ResolvedTypes resolvedTypes, IFeatureScopeSession featureScopeSession, EObject element) { if (element instanceof JvmDeclaredType) { _computeTypes(preparedResolvedTypes, resolvedTypes, featureScopeSession, (JvmDeclaredType) element); } else if (element instanceof JvmConstructor) { _computeTypes(preparedResolvedTypes, resolvedTypes, featureScopeSession, (JvmConstructor) element); } else if (element instanceof JvmField) { _computeTypes(preparedResolvedTypes, resolvedTypes, featureScopeSession, (JvmField) element); } else if (element instanceof JvmOperation) { _computeTypes(preparedResolvedTypes, resolvedTypes, featureScopeSession, (JvmOperation) element); } else { computeTypes(resolvedTypes, featureScopeSession, element); } }
protected JvmTypeReference doGetTypeReferenceWithCurrentTypeResolver() { LightweightTypeReference actualType = returnType ? resolvedTypes.getReturnType(expression) : resolvedTypes.getActualType(expression); if (actualType == null) { computeTypes(resolvedTypesByContext, resolvedTypes, session, member); actualType = returnType ? resolvedTypes.getExpectedReturnType(expression) : resolvedTypes.getExpectedType(expression); if (actualType == null) actualType = returnType ? resolvedTypes.getReturnType(expression) : resolvedTypes.getActualType(expression); } if (actualType == null) return null; return toJavaCompliantTypeReference(convertLocalType(actualType), session); }
protected void computeAnnotationTypes(ResolvedTypes resolvedTypes, IFeatureScopeSession featureScopeSession, List<JvmAnnotationReference> annotations) { for(JvmAnnotationReference annotation: annotations) { EObject sourceElement = getSourceElement(annotation); if (sourceElement != annotation) { computeTypes(resolvedTypes, featureScopeSession, sourceElement); } else { for(JvmAnnotationValue value: annotation.getExplicitValues()) { if (value instanceof JvmCustomAnnotationValue) { JvmCustomAnnotationValue custom = (JvmCustomAnnotationValue) value; for(Object object: custom.getValues()) { if (object instanceof XExpression) { AnnotationValueTypeComputationState state = new AnnotationValueTypeComputationState(resolvedTypes, featureScopeSession, value, (XExpression) object); state.computeTypes(); } } } else if (value instanceof JvmAnnotationAnnotationValue) { computeAnnotationTypes(resolvedTypes, featureScopeSession, ((JvmAnnotationAnnotationValue) value).getValues()); } } } } }