public class ArgLabel_c extends Label_c implements ArgLabel
description, toJava, variables
Modifier | Constructor and Description |
---|---|
protected |
ArgLabel_c() |
|
ArgLabel_c(JifTypeSystem ts,
polyglot.types.ProcedureInstance pi,
java.lang.String name,
polyglot.util.Position pos) |
|
ArgLabel_c(JifTypeSystem ts,
polyglot.types.VarInstance vi,
polyglot.types.CodeInstance ci,
polyglot.util.Position pos) |
Modifier and Type | Method and Description |
---|---|
java.lang.String |
componentString(java.util.Set<Label> printedLabels)
return a string s such that {s} is a label
|
java.lang.String |
description() |
boolean |
equalsImpl(polyglot.types.TypeObject o) |
polyglot.types.VarInstance |
formalInstance() |
int |
hashCode() |
boolean |
isCanonical() |
boolean |
isComparable()
Is this label comparable to other labels?
|
boolean |
isCovariant()
Is this label covariant?
|
protected boolean |
isDisambiguatedImpl()
Check if the label is disambiguated, without recursing into child labels.
|
boolean |
isEnumerable()
Are the components of this label enumerable?
|
boolean |
isRuntimeRepresentable() |
boolean |
leq_(Label L,
LabelEnv env,
LabelEnv.SearchState state)
Implementation of leq, should only be called by JifTypeSystem
|
java.lang.String |
name() |
void |
setCodeInstance(polyglot.types.CodeInstance ci) |
void |
setName(java.lang.String name) |
void |
setUpperBound(Label upperBound) |
Label |
subst(LabelSubstitution substitution) |
Label |
upperBound() |
componentString, confProjection, copy, hasVariableComponents, hasVariables, hasWritersToReaders, integProjection, isBottom, isDisambiguated, isInvariant, isTop, labelCheck, normalize, setDescription, simplify, simplifyImpl, throwTypes, toJava, toJava, toString, toString, variableComponents, variables
typeSystem
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
componentString, confProjection, copy, hasVariableComponents, hasVariables, hasWritersToReaders, integProjection, isBottom, isDisambiguated, isInvariant, isTop, labelCheck, normalize, setDescription, simplify, throwTypes, toJava, toString, toString, variableComponents, variables
toJava
typeSystem
protected ArgLabel_c()
public ArgLabel_c(JifTypeSystem ts, polyglot.types.VarInstance vi, polyglot.types.CodeInstance ci, polyglot.util.Position pos)
public ArgLabel_c(JifTypeSystem ts, polyglot.types.ProcedureInstance pi, java.lang.String name, polyglot.util.Position pos)
public polyglot.types.VarInstance formalInstance()
formalInstance
in interface ArgLabel
public Label upperBound()
upperBound
in interface ArgLabel
public void setUpperBound(Label upperBound)
setUpperBound
in interface ArgLabel
public void setCodeInstance(polyglot.types.CodeInstance ci)
setCodeInstance
in interface ArgLabel
public boolean isRuntimeRepresentable()
isRuntimeRepresentable
in interface Label
isRuntimeRepresentable
in interface Param
public boolean isCovariant()
Label
isCovariant
in interface Label
public boolean isComparable()
Label
For example, an UnknownLabel is not comparable to others, neither is a VarLabel. Most other labels are.
isComparable
in interface Label
public boolean isCanonical()
isCanonical
in interface Param
isCanonical
in interface polyglot.types.TypeObject
public boolean isEnumerable()
Label
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.
isEnumerable
in interface Label
protected boolean isDisambiguatedImpl()
Label_c
isDisambiguatedImpl
in class Label_c
public boolean equalsImpl(polyglot.types.TypeObject o)
equalsImpl
in interface polyglot.types.TypeObject
equalsImpl
in class Label_c
public int hashCode()
hashCode
in class polyglot.types.TypeObject_c
public java.lang.String componentString(java.util.Set<Label> printedLabels)
Label
componentString
in interface Label
componentString
in class Label_c
printedLabels
- the set of labels for which auxiliary information should be
omitted.public boolean leq_(Label L, LabelEnv env, LabelEnv.SearchState state)
Label
public Label subst(LabelSubstitution substitution) throws polyglot.types.SemanticException
public java.lang.String description()
description
in interface Label
description
in class Label_c