jif.types.label

## Class ThisLabel_c

- java.lang.Object
- - polyglot.types.TypeObject_c
  - - jif.types.Param_c
    - - jif.types.label.Label_c
      - - jif.types.label.ThisLabel_c

- All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable, ActsForParam, Label, ThisLabel, Param, polyglot.types.TypeObject, polyglot.util.Copy<polyglot.types.TypeObject>

      public class ThisLabel_c
      extends Label_c
      implements ThisLabel

  See Also:
    Serialized Form

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface polyglot.util.Copy

      `polyglot.util.Copy.Util`

  - ### Field Summary

    - ### Fields inherited from class jif.types.label.Label_c

      `description, toJava, variables`

    - ### Fields inherited from class polyglot.types.TypeObject_c

      `position, ts`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ThisLabel_c(JifTypeSystem ts, polyglot.types.ReferenceType ct, polyglot.util.Position pos)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `polyglot.types.ReferenceType` | `classType()`
    `java.lang.String` | `componentString(java.util.Set<Label> printedLabels)` return a string s such that {s} is a label
    `boolean` | `equalsImpl(polyglot.types.TypeObject o)`
    `int` | `hashCode()`
    `boolean` | `isCanonical()`
    `boolean` | `isComparable()` Is this label comparable to other labels?
    `boolean` | `isCovariant()` Is this label covariant?
    `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.util.Set<Variable>` | `variables()` The set of variables that this label contains including variables contained in upper bounds of arg labels.

    - ### Methods inherited from class jif.types.label.Label_c

      `componentString, confProjection, copy, description, hasVariableComponents, hasVariables, hasWritersToReaders, integProjection, isBottom, isDisambiguated, isInvariant, isTop, labelCheck, normalize, setDescription, simplify, simplifyImpl, subst, throwTypes, toJava, toJava, toString, toString, variableComponents`

    - ### Methods inherited from class jif.types.Param_c

      `typeSystem`

    - ### Methods inherited from class polyglot.types.TypeObject_c

      `equals, position`

    - ### 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, copy, description, hasVariableComponents, hasVariables, hasWritersToReaders, integProjection, isBottom, isDisambiguated, isInvariant, isTop, labelCheck, normalize, setDescription, simplify, subst, throwTypes, toJava, toString, toString, variableComponents`

    - ### Methods inherited from interface jif.types.ActsForParam

      `toJava`

    - ### Methods inherited from interface jif.types.Param

      `typeSystem`

    - ### Methods inherited from interface polyglot.types.TypeObject

      `position`

- - ### Constructor Detail

    - #### ThisLabel_c

          public ThisLabel_c(JifTypeSystem ts,
                             polyglot.types.ReferenceType ct,
                             polyglot.util.Position pos)

  - ### Method Detail

    - #### 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`

    - #### isDisambiguatedImpl

          public 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`

    - #### 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`

    - #### classType

          public polyglot.types.ReferenceType classType()

      Specified by:
        `classType` in interface `ThisLabel`

    - #### 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<Label> printedLabels)

      Description copied from interface: `Label`
      return a string s such that {s} is a label
      Specified by:
        `componentString` in interface `Label`
      Specified by:
        `componentString` in class `Label_c`
      Parameters:
        `printedLabels` - the set of labels for which auxiliary information should be omitted.

    - #### 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.

    - #### variables

          public java.util.Set<Variable> variables()

      Description copied from interface: `Label`
      The set of variables that this label contains including variables contained in upper bounds of arg labels.
      Specified by:
        `variables` in interface `Label`
      Overrides:
        `variables` in class `Label_c`