public abstract class AbstractImplicitFeature extends java.lang.Object implements IFeatureLinkingCandidate
Modifier | Constructor and Description |
---|---|
protected |
AbstractImplicitFeature(XAbstractFeatureCall featureCall,
XAbstractFeatureCall implicit,
ExpressionTypeComputationState state) |
Modifier and Type | Method and Description |
---|---|
void |
applyToComputationState()
Apply this candidate to the current computation state model.
|
XExpression |
getExpression()
The current expression that shall be linked.
|
JvmIdentifiableElement |
getFeature()
The currently considered feature (if any).
|
XAbstractFeatureCall |
getFeatureCall()
Returns the feature call that is linked.
|
protected XAbstractFeatureCall |
getOwner() |
ILinkingCandidate |
getPreferredCandidate(ILinkingCandidate other)
Produces the best candidate for the current two candidates.
|
protected ExpressionTypeComputationState |
getState() |
java.util.List<LightweightTypeReference> |
getTypeArguments()
The resolved type arguments.
|
boolean |
isExtension()
Returns
true if the the linked feature is contributed
by an extension. |
boolean |
isStatic()
Returns
true if the the linked feature is static. |
boolean |
isTypeLiteral()
Returns
true if the the feature call is linked as a type literal. |
boolean |
validate(IAcceptor<? super AbstractDiagnostic> result)
Produce diagnostics for this condidate.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
applyToModel
protected AbstractImplicitFeature(XAbstractFeatureCall featureCall, XAbstractFeatureCall implicit, ExpressionTypeComputationState state)
protected ExpressionTypeComputationState getState()
public void applyToComputationState()
ILinkingCandidate
applyToComputationState
in interface ILinkingCandidate
protected XAbstractFeatureCall getOwner()
public ILinkingCandidate getPreferredCandidate(ILinkingCandidate other)
ILinkingCandidate
this
and other
) are ambiguous
so no prefered candidate can be chosen. In that case, a new linking candidate
may be produced that carries this information and will use that on ILinkingCandidate.applyToComputationState()
,
ILinkingCandidate.applyToModel(IResolvedTypes)
, and IApplicableCandidate.validate(IAcceptor)
.getPreferredCandidate
in interface ILinkingCandidate
public JvmIdentifiableElement getFeature()
ILinkingCandidate
null
.getFeature
in interface ILinkingCandidate
public boolean validate(IAcceptor<? super AbstractDiagnostic> result)
IApplicableCandidate
validate
in interface IApplicableCandidate
true
if further validation should be performed.public java.util.List<LightweightTypeReference> getTypeArguments()
ILinkingCandidate
getTypeArguments
in interface ILinkingCandidate
public XAbstractFeatureCall getFeatureCall()
IFeatureLinkingCandidate
getFeatureCall
in interface IFeatureLinkingCandidate
public XExpression getExpression()
ILinkingCandidate
getExpression
in interface ILinkingCandidate
public boolean isStatic()
IFeatureLinkingCandidate
true
if the the linked feature is static.isStatic
in interface IFeatureLinkingCandidate
public boolean isTypeLiteral()
IFeatureLinkingCandidate
true
if the the feature call is linked as a type literal.isTypeLiteral
in interface IFeatureLinkingCandidate
public boolean isExtension()
IFeatureLinkingCandidate
true
if the the linked feature is contributed
by an extension.isExtension
in interface IFeatureLinkingCandidate