Class XtendReentrantTypeResolver
- java.lang.Object
-
- org.eclipse.xtext.xbase.typesystem.internal.AbstractRootedReentrantTypeResolver
-
- org.eclipse.xtext.xbase.typesystem.internal.DefaultReentrantTypeResolver
-
- org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareReentrantTypeResolver
-
- org.eclipse.xtend.core.typesystem.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.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description class
XtendReentrantTypeResolver.CreateCacheFieldTypeReferenceProvider
static class
XtendReentrantTypeResolver.DispatchParameterTypeReferenceProvider
static class
XtendReentrantTypeResolver.DispatchReturnTypeReferenceProvider
static class
XtendReentrantTypeResolver.InitializerParameterTypeReferenceProvider
-
Nested classes/interfaces inherited from class org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareReentrantTypeResolver
org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareReentrantTypeResolver.AbstractDemandTypeReferenceProvider, org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareReentrantTypeResolver.AnyTypeReferenceProvider, org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareReentrantTypeResolver.DemandTypeReferenceProvider, org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareReentrantTypeResolver.LocalVariableCapturerImpl
-
-
Constructor Summary
Constructors Constructor Description XtendReentrantTypeResolver()
-
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)
Deprecated.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
-
-
-
-
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 classorg.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 classorg.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 classorg.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 classorg.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 classorg.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 classorg.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 classorg.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 classorg.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 classorg.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)
Deprecated.
-
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 classorg.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 classorg.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 classorg.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareReentrantTypeResolver
-
-