jif.types.label
Class ArgLabel_c
java.lang.Object
polyglot.types.TypeObject_c
jif.types.label.Label_c
jif.types.label.ArgLabel_c
- All Implemented Interfaces:
- java.io.Serializable, java.lang.Cloneable, ArgLabel, Label, Param, polyglot.types.TypeObject, polyglot.util.Copy
public class ArgLabel_c
- extends Label_c
- implements ArgLabel
This label is used as the label of the real argument.
The purpose is to avoid having to re-interpret labels at each call.
- See Also:
- Serialized Form
Fields inherited from class polyglot.types.TypeObject_c |
position, ts |
Methods inherited from class jif.types.label.Label_c |
componentString, confProjection, copy, hasVariableComponents, hasVariables, hasWritersToReaders, integProjection, isBottom, isDisambiguated, isInvariant, isTop, labelCheck, normalize, setDescription, simplify, simplifyImpl, throwTypes, toJava, toString, toString, variableComponents, variables |
Methods inherited from class polyglot.types.TypeObject_c |
equals, position, typeSystem |
Methods inherited from class java.lang.Object |
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
Methods inherited from interface jif.types.label.Label |
componentString, confProjection, hasVariableComponents, hasVariables, hasWritersToReaders, integProjection, isBottom, isDisambiguated, isInvariant, isTop, labelCheck, normalize, setDescription, simplify, throwTypes, toJava, toString, variableComponents, variables |
Methods inherited from interface polyglot.types.TypeObject |
position, typeSystem |
Methods inherited from interface polyglot.util.Copy |
copy |
ArgLabel_c
protected ArgLabel_c()
ArgLabel_c
public ArgLabel_c(JifTypeSystem ts,
polyglot.types.VarInstance vi,
polyglot.types.CodeInstance ci,
polyglot.util.Position pos)
ArgLabel_c
public ArgLabel_c(JifTypeSystem ts,
polyglot.types.ProcedureInstance pi,
java.lang.String name,
polyglot.util.Position pos)
formalInstance
public polyglot.types.VarInstance formalInstance()
- Specified by:
formalInstance
in interface ArgLabel
upperBound
public Label upperBound()
- Specified by:
upperBound
in interface ArgLabel
name
public java.lang.String name()
- Specified by:
name
in interface ArgLabel
setName
public void setName(java.lang.String name)
- Specified by:
setName
in interface ArgLabel
setUpperBound
public void setUpperBound(Label upperBound)
- Specified by:
setUpperBound
in interface ArgLabel
setCodeInstance
public void setCodeInstance(polyglot.types.CodeInstance ci)
- Specified by:
setCodeInstance
in interface ArgLabel
isRuntimeRepresentable
public boolean isRuntimeRepresentable()
- Specified by:
isRuntimeRepresentable
in interface Label
- Specified by:
isRuntimeRepresentable
in interface Param
isCovariant
public boolean isCovariant()
- Description copied from interface:
Label
- Is this label covariant?
- Specified by:
isCovariant
in interface Label
isComparable
public boolean isComparable()
- Description copied from interface:
Label
- Is this label comparable to other labels?
For example, an UnknownLabel is not comparable to others, neither is a
VarLabel. Most other labels are.
- Specified by:
isComparable
in interface Label
isCanonical
public boolean isCanonical()
- Specified by:
isCanonical
in interface Param
- Specified by:
isCanonical
in interface polyglot.types.TypeObject
isEnumerable
public boolean isEnumerable()
- Description copied from interface:
Label
- Are the components of this label enumerable?
For example, Singletons are enumerable, JoinLabels are enumerable,
RuntimeLabel (the label of all runtime representable components) is not
enumerable.
NOTE: The components of a label are not neccessarily stuck together with
a join operation. For example, the MeetLabel uses the meet operation
between its components.
- Specified by:
isEnumerable
in interface Label
isDisambiguatedImpl
protected boolean isDisambiguatedImpl()
- Description copied from class:
Label_c
- Check if the label is disambiguated, without recursing into child labels.
- Specified by:
isDisambiguatedImpl
in class Label_c
equalsImpl
public boolean equalsImpl(polyglot.types.TypeObject o)
- Specified by:
equalsImpl
in interface polyglot.types.TypeObject
- Specified by:
equalsImpl
in class Label_c
hashCode
public int hashCode()
- Overrides:
hashCode
in class polyglot.types.TypeObject_c
componentString
public java.lang.String componentString(java.util.Set printedLabels)
- Specified by:
componentString
in interface Label
- Specified by:
componentString
in class Label_c
leq_
public boolean leq_(Label L,
LabelEnv env,
LabelEnv.SearchState state)
- Description copied from interface:
Label
- Implementation of leq, should only be called by JifTypeSystem
- Specified by:
leq_
in interface Label
- Parameters:
L
- the label to determine if this label is leq to. This label
always satisfies !this.equals(L)env
- the label environment (including principal hierarchy). Will
always be non-null.
subst
public Label subst(LabelSubstitution substitution)
throws polyglot.types.SemanticException
- Specified by:
subst
in interface Label
- Overrides:
subst
in class Label_c
- Parameters:
substitution
- The LabelSubstitution
to apply to this
label
- Returns:
- the result of applying labelSubst to this label.
- Throws:
polyglot.types.SemanticException
description
public java.lang.String description()
- Specified by:
description
in interface Label
- Overrides:
description
in class Label_c