Class XtendReentrantTypeResolver

  • All Implemented Interfaces:
    org.eclipse.xtext.xbase.typesystem.internal.IReentrantTypeResolver

    public class XtendReentrantTypeResolver
    extends org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareReentrantTypeResolver
    The customized reentrant type resolver is responsible for proper typing of dispatch methods' return type and parameter types as well as adding extension fields to the scope.
    • Field Summary

      • Fields inherited from class org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareReentrantTypeResolver

        rootedInstances
      • Fields inherited from class org.eclipse.xtext.xbase.typesystem.internal.DefaultReentrantTypeResolver

        allRootedExpressions
      • Fields inherited from interface org.eclipse.xtext.xbase.typesystem.internal.IReentrantTypeResolver

        NULL
    • Method Summary

      All Methods Instance Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      protected void _computeTypes​(java.util.Map<org.eclipse.xtext.common.types.JvmIdentifiableElement,​org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes> preparedResolvedTypes, org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes resolvedTypes, org.eclipse.xtext.xbase.scoping.batch.IFeatureScopeSession featureScopeSession, org.eclipse.xtext.common.types.JvmOperation operation)  
      protected void _doPrepare​(org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes resolvedTypes, org.eclipse.xtext.xbase.scoping.batch.IFeatureScopeSession featureScopeSession, org.eclipse.xtext.common.types.JvmConstructor constructor, java.util.Map<org.eclipse.xtext.common.types.JvmIdentifiableElement,​org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes> resolvedTypesByContext)  
      protected void _doPrepare​(org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes resolvedTypes, org.eclipse.xtext.xbase.scoping.batch.IFeatureScopeSession featureScopeSession, org.eclipse.xtext.common.types.JvmField field, java.util.Map<org.eclipse.xtext.common.types.JvmIdentifiableElement,​org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes> resolvedTypesByContext)
      Initializes the type inference strategy for the cache field for create extensions.
      protected void _doPrepare​(org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes resolvedTypes, org.eclipse.xtext.xbase.scoping.batch.IFeatureScopeSession featureScopeSession, org.eclipse.xtext.common.types.JvmOperation operation, java.util.Map<org.eclipse.xtext.common.types.JvmIdentifiableElement,​org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes> resolvedTypesByContext)  
      protected org.eclipse.xtext.xbase.scoping.batch.IFeatureScopeSession addThisTypeToStaticScope​(org.eclipse.xtext.xbase.scoping.batch.IFeatureScopeSession session, org.eclipse.xtext.common.types.JvmDeclaredType type)  
      protected void computeDanglingExpressionType​(org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes resolvedTypes, org.eclipse.xtext.xbase.scoping.batch.IFeatureScopeSession featureScopeSession, XtendMember member, org.eclipse.xtext.xbase.XExpression expression)
      Computes the type of the given expression if it was not yet processed.
      protected void computeTypes​(org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes resolvedTypes, org.eclipse.xtext.xbase.scoping.batch.IFeatureScopeSession session)  
      protected void computeTypes​(org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes resolvedTypes, org.eclipse.xtext.xbase.scoping.batch.IFeatureScopeSession featureScopeSession, org.eclipse.emf.ecore.EObject element)  
      protected void computeTypes​(org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes resolvedTypes, org.eclipse.xtext.xbase.scoping.batch.IFeatureScopeSession featureScopeSession, XtendMember member)  
      protected void computeTypes​(org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes resolvedTypes, org.eclipse.xtext.xbase.scoping.batch.IFeatureScopeSession featureScopeSession, XtendTypeDeclaration typeDeclaration)  
      protected void computeXtendAnnotationTypes​(org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes resolvedTypes, org.eclipse.xtext.xbase.scoping.batch.IFeatureScopeSession featureScopeSession, java.util.List<org.eclipse.xtext.xbase.annotations.xAnnotations.XAnnotation> annotations)  
      protected org.eclipse.xtext.common.types.JvmParameterizedTypeReference createSuperTypeReference​(org.eclipse.xtext.common.types.JvmType superType, org.eclipse.xtext.xbase.XConstructorCall constructorCall)  
      protected org.eclipse.xtext.xbase.typesystem.util.AbstractReentrantTypeReferenceProvider createTypeProvider​(java.util.Map<org.eclipse.xtext.common.types.JvmIdentifiableElement,​org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes> resolvedTypesByContext, org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes resolvedTypes, org.eclipse.xtext.xbase.scoping.batch.IFeatureScopeSession featureScopeSession, org.eclipse.xtext.common.types.JvmMember member, boolean returnType)  
      protected boolean doIsHandled​(org.eclipse.emf.ecore.EObject root, org.eclipse.emf.ecore.EObject instance)  
      protected void doPrepareLocalTypes​(org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes resolvedTypes, org.eclipse.xtext.xbase.scoping.batch.IFeatureScopeSession featureScopeSession, org.eclipse.xtext.common.types.JvmFeature container, java.util.Map<org.eclipse.xtext.common.types.JvmIdentifiableElement,​org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes> resolvedTypesByContext)  
      protected java.lang.String getInvalidWritableVariableAccessMessage​(org.eclipse.xtext.xbase.XVariableDeclaration variable, org.eclipse.xtext.xbase.XAbstractFeatureCall featureCall, org.eclipse.xtext.xbase.typesystem.IResolvedTypes resolvedTypes)  
      protected org.eclipse.xtext.xbase.typesystem.references.LightweightTypeReference getReturnTypeOfOverriddenOperation​(org.eclipse.xtext.common.types.JvmOperation operation, org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes resolvedTypes, org.eclipse.xtext.xbase.scoping.batch.IFeatureScopeSession session)  
      protected org.eclipse.xtext.common.types.JvmConstructor inferAnonymousClassConstructor​(AnonymousClass anonymousClass, org.eclipse.xtext.common.types.JvmGenericType inferredLocalClass)  
      protected org.eclipse.xtext.common.types.JvmConstructor inferAnonymousClassConstructor​(AnonymousClass anonymousClass, org.eclipse.xtext.common.types.JvmGenericType inferredLocalClass, org.eclipse.xtext.common.types.JvmConstructor superConstructor, boolean visible)  
      protected org.eclipse.xtext.common.types.JvmConstructor inferAnonymousClassConstructor​(AnonymousClass anonymousClass, org.eclipse.xtext.common.types.JvmGenericType inferredLocalClass, org.eclipse.xtext.common.types.JvmDeclaredType superInterface)
      protected boolean isHandled​(org.eclipse.xtext.common.types.JvmIdentifiableElement identifiableElement)  
      protected boolean isHandled​(org.eclipse.xtext.xbase.XExpression expression)  
      protected org.eclipse.xtext.xbase.typesystem.references.LightweightTypeReference normalizeDispatchReturnType​(org.eclipse.xtext.xbase.typesystem.references.LightweightTypeReference declaredType, java.util.List<org.eclipse.xtext.xbase.typesystem.references.LightweightTypeReference> computedTypes, org.eclipse.xtext.xbase.typesystem.references.LightweightTypeReference implicitVoidOrNull, org.eclipse.xtext.xbase.typesystem.references.LightweightTypeReference thrownVoidOrNull, org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes resolvedTypes)  
      protected void resolveDispatchCaseTypes​(org.eclipse.xtext.common.types.JvmOperation dispatcher, java.util.List<org.eclipse.xtext.common.types.JvmOperation> dispatchCases, org.eclipse.xtext.xbase.typesystem.references.LightweightTypeReference type, org.eclipse.xtext.xbase.scoping.batch.IFeatureScopeSession featureScopeSession)  
      • Methods inherited from class org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareReentrantTypeResolver

        _computeTypes, _computeTypes, _computeTypes, _doPrepare, _recordExpressions, _recordExpressions, _recordExpressions, addExtensionFieldsToMemberSession, addExtensionProviders, addExtensionsToMemberSession, addThisAndSuper, addThisAndSuper, clear, computeAnnotationTypes, computeAnnotationTypes, computeAnnotationTypes, computeLocalTypes, computeMemberTypes, computeTypes, createComputedTypeReference, createExtensionProvider, createTypeProvider, declareTypeParameters, doPrepare, getAnnotationLookup, getComputedTypeReference, getExtendedClass, getInferredElements, getInferredFrom, getLogicalContainerProvider, getOverrideHelper, getRootJvmType, getSourceElement, getTypeResolver, isExtensionProvider, isHandled, isPartOfExpressionTree, isStatic, markComputing, markToBeInferred, mergeChildTypes, prepare, prepareMembers, recordAnnotationExpressions, recordAnnotationExpressions, recordAnnotationExpressions, recordExpressions, requestCapturedLocalVariables, setAllRootedExpressions, toJavaCompliantTypeReference, unmarkComputing
      • Methods inherited from class org.eclipse.xtext.xbase.typesystem.internal.DefaultReentrantTypeResolver

        _computeTypes, createFeatureScopeTracker, createResolvedTypes, getBatchScopeProvider, getExpressionArgumentFactory, getFeatureScopes, getImplicitlyMessagePart, getIssueSeverities, getOperationCanceledManager, getRoot, getScopeProviderAccess, getServices, getTypeArgumentMerger, getTypeComputer, getXbaseFactory, initializeFrom, isDisallowedName, isDiscouragedName, isShadowingAllowed, reentrantResolve, resolve, setTypeComputer
      • Methods inherited from class org.eclipse.xtext.xbase.typesystem.internal.AbstractRootedReentrantTypeResolver

        toString
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • XtendReentrantTypeResolver

        public XtendReentrantTypeResolver()
    • Method Detail

      • computeTypes

        protected void computeTypes​(org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes resolvedTypes,
                                    org.eclipse.xtext.xbase.scoping.batch.IFeatureScopeSession session)
        Overrides:
        computeTypes in class org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareReentrantTypeResolver
      • computeTypes

        protected void computeTypes​(org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes resolvedTypes,
                                    org.eclipse.xtext.xbase.scoping.batch.IFeatureScopeSession featureScopeSession,
                                    org.eclipse.emf.ecore.EObject element)
        Overrides:
        computeTypes in class org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareReentrantTypeResolver
      • computeTypes

        protected void computeTypes​(org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes resolvedTypes,
                                    org.eclipse.xtext.xbase.scoping.batch.IFeatureScopeSession featureScopeSession,
                                    XtendTypeDeclaration typeDeclaration)
      • computeTypes

        protected void computeTypes​(org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes resolvedTypes,
                                    org.eclipse.xtext.xbase.scoping.batch.IFeatureScopeSession featureScopeSession,
                                    XtendMember member)
      • computeDanglingExpressionType

        protected void computeDanglingExpressionType​(org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes resolvedTypes,
                                                     org.eclipse.xtext.xbase.scoping.batch.IFeatureScopeSession featureScopeSession,
                                                     XtendMember member,
                                                     org.eclipse.xtext.xbase.XExpression expression)
        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.
      • isHandled

        protected boolean isHandled​(org.eclipse.xtext.xbase.XExpression expression)
        Overrides:
        isHandled in class org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareReentrantTypeResolver
      • doIsHandled

        protected boolean doIsHandled​(org.eclipse.emf.ecore.EObject root,
                                      org.eclipse.emf.ecore.EObject instance)
      • isHandled

        protected boolean isHandled​(org.eclipse.xtext.common.types.JvmIdentifiableElement identifiableElement)
        Overrides:
        isHandled in class org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareReentrantTypeResolver
      • _computeTypes

        protected void _computeTypes​(java.util.Map<org.eclipse.xtext.common.types.JvmIdentifiableElement,​org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes> preparedResolvedTypes,
                                     org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes resolvedTypes,
                                     org.eclipse.xtext.xbase.scoping.batch.IFeatureScopeSession featureScopeSession,
                                     org.eclipse.xtext.common.types.JvmOperation operation)
        Overrides:
        _computeTypes in class org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareReentrantTypeResolver
      • resolveDispatchCaseTypes

        protected void resolveDispatchCaseTypes​(org.eclipse.xtext.common.types.JvmOperation dispatcher,
                                                java.util.List<org.eclipse.xtext.common.types.JvmOperation> dispatchCases,
                                                org.eclipse.xtext.xbase.typesystem.references.LightweightTypeReference type,
                                                org.eclipse.xtext.xbase.scoping.batch.IFeatureScopeSession featureScopeSession)
      • normalizeDispatchReturnType

        protected org.eclipse.xtext.xbase.typesystem.references.LightweightTypeReference normalizeDispatchReturnType​(org.eclipse.xtext.xbase.typesystem.references.LightweightTypeReference declaredType,
                                                                                                                     java.util.List<org.eclipse.xtext.xbase.typesystem.references.LightweightTypeReference> computedTypes,
                                                                                                                     org.eclipse.xtext.xbase.typesystem.references.LightweightTypeReference implicitVoidOrNull,
                                                                                                                     org.eclipse.xtext.xbase.typesystem.references.LightweightTypeReference thrownVoidOrNull,
                                                                                                                     org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes resolvedTypes)
      • computeXtendAnnotationTypes

        protected void computeXtendAnnotationTypes​(org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes resolvedTypes,
                                                   org.eclipse.xtext.xbase.scoping.batch.IFeatureScopeSession featureScopeSession,
                                                   java.util.List<org.eclipse.xtext.xbase.annotations.xAnnotations.XAnnotation> annotations)
      • _doPrepare

        protected void _doPrepare​(org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes resolvedTypes,
                                  org.eclipse.xtext.xbase.scoping.batch.IFeatureScopeSession featureScopeSession,
                                  org.eclipse.xtext.common.types.JvmField field,
                                  java.util.Map<org.eclipse.xtext.common.types.JvmIdentifiableElement,​org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes> resolvedTypesByContext)
        Initializes the type inference strategy for the cache field for create extensions.
        Overrides:
        _doPrepare in class org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareReentrantTypeResolver
      • _doPrepare

        protected void _doPrepare​(org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes resolvedTypes,
                                  org.eclipse.xtext.xbase.scoping.batch.IFeatureScopeSession featureScopeSession,
                                  org.eclipse.xtext.common.types.JvmConstructor constructor,
                                  java.util.Map<org.eclipse.xtext.common.types.JvmIdentifiableElement,​org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes> resolvedTypesByContext)
        Overrides:
        _doPrepare in class org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareReentrantTypeResolver
      • addThisTypeToStaticScope

        protected org.eclipse.xtext.xbase.scoping.batch.IFeatureScopeSession addThisTypeToStaticScope​(org.eclipse.xtext.xbase.scoping.batch.IFeatureScopeSession session,
                                                                                                      org.eclipse.xtext.common.types.JvmDeclaredType type)
        Overrides:
        addThisTypeToStaticScope in class org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareReentrantTypeResolver
      • _doPrepare

        protected void _doPrepare​(org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes resolvedTypes,
                                  org.eclipse.xtext.xbase.scoping.batch.IFeatureScopeSession featureScopeSession,
                                  org.eclipse.xtext.common.types.JvmOperation operation,
                                  java.util.Map<org.eclipse.xtext.common.types.JvmIdentifiableElement,​org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes> resolvedTypesByContext)
        Overrides:
        _doPrepare in class org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareReentrantTypeResolver
      • doPrepareLocalTypes

        protected void doPrepareLocalTypes​(org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes resolvedTypes,
                                           org.eclipse.xtext.xbase.scoping.batch.IFeatureScopeSession featureScopeSession,
                                           org.eclipse.xtext.common.types.JvmFeature container,
                                           java.util.Map<org.eclipse.xtext.common.types.JvmIdentifiableElement,​org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes> resolvedTypesByContext)
      • createSuperTypeReference

        protected org.eclipse.xtext.common.types.JvmParameterizedTypeReference createSuperTypeReference​(org.eclipse.xtext.common.types.JvmType superType,
                                                                                                        org.eclipse.xtext.xbase.XConstructorCall constructorCall)
      • inferAnonymousClassConstructor

        protected org.eclipse.xtext.common.types.JvmConstructor inferAnonymousClassConstructor​(AnonymousClass anonymousClass,
                                                                                               org.eclipse.xtext.common.types.JvmGenericType inferredLocalClass,
                                                                                               org.eclipse.xtext.common.types.JvmConstructor superConstructor,
                                                                                               boolean visible)
      • inferAnonymousClassConstructor

        @Deprecated
        protected org.eclipse.xtext.common.types.JvmConstructor inferAnonymousClassConstructor​(AnonymousClass anonymousClass,
                                                                                               org.eclipse.xtext.common.types.JvmGenericType inferredLocalClass,
                                                                                               org.eclipse.xtext.common.types.JvmDeclaredType superInterface)
      • inferAnonymousClassConstructor

        protected org.eclipse.xtext.common.types.JvmConstructor inferAnonymousClassConstructor​(AnonymousClass anonymousClass,
                                                                                               org.eclipse.xtext.common.types.JvmGenericType inferredLocalClass)
      • createTypeProvider

        protected org.eclipse.xtext.xbase.typesystem.util.AbstractReentrantTypeReferenceProvider createTypeProvider​(java.util.Map<org.eclipse.xtext.common.types.JvmIdentifiableElement,​org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes> resolvedTypesByContext,
                                                                                                                    org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes resolvedTypes,
                                                                                                                    org.eclipse.xtext.xbase.scoping.batch.IFeatureScopeSession featureScopeSession,
                                                                                                                    org.eclipse.xtext.common.types.JvmMember member,
                                                                                                                    boolean returnType)
        Overrides:
        createTypeProvider in class org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareReentrantTypeResolver
      • getInvalidWritableVariableAccessMessage

        protected java.lang.String getInvalidWritableVariableAccessMessage​(org.eclipse.xtext.xbase.XVariableDeclaration variable,
                                                                           org.eclipse.xtext.xbase.XAbstractFeatureCall featureCall,
                                                                           org.eclipse.xtext.xbase.typesystem.IResolvedTypes resolvedTypes)
        Overrides:
        getInvalidWritableVariableAccessMessage in class org.eclipse.xtext.xbase.typesystem.internal.DefaultReentrantTypeResolver
      • getReturnTypeOfOverriddenOperation

        protected org.eclipse.xtext.xbase.typesystem.references.LightweightTypeReference getReturnTypeOfOverriddenOperation​(org.eclipse.xtext.common.types.JvmOperation operation,
                                                                                                                            org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes resolvedTypes,
                                                                                                                            org.eclipse.xtext.xbase.scoping.batch.IFeatureScopeSession session)
        Overrides:
        getReturnTypeOfOverriddenOperation in class org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareReentrantTypeResolver