dotty.tools.dotc.transform

ExplicitOuter

Related Docs: class ExplicitOuter | package transform

object ExplicitOuter

Linear Supertypes
AnyRef, Any
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. ExplicitOuter
  2. AnyRef
  3. Any
  1. Hide All
  2. Show all
Learn more about member selection
Visibility
  1. Public
  2. All

Type Members

  1. final class OuterOps extends AnyVal

    The operations in this class

    The operations in this class

    • add outer parameters
    • pass outer arguments to these parameters
    • replace outer this references by outer paths. They are called from erasure. There are two constraints which suggest these operations should be done in erasure.
    • Replacing this references with outer paths loses aliasing information, so programs will not typecheck with unerased types unless a lot of type refinements are added. Therefore, outer paths should be computed no earlier than erasure.
    • outer parameters should not show up in signatures, so again they cannot be added before erasure.
    • outer arguments need access to outer parameters as well as to the original type prefixes of types in New expressions. These prefixes get erased during erasure. Therefore, outer arguments have to be passed no later than erasure.

Value Members

  1. final def !=(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0

    Definition Classes
    Any
  5. def clone(): AnyRef

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  6. def ensureOuterAccessors(cls: ClassSymbol)(implicit ctx: Context): Unit

    Ensure that class cls has outer accessors

  7. final def eq(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  8. def equals(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  9. def finalize(): Unit

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  10. final def getClass(): Class[_]

    Definition Classes
    AnyRef → Any
  11. def hashCode(): Int

    Definition Classes
    AnyRef → Any
  12. final def isInstanceOf[T0]: Boolean

    Definition Classes
    Any
  13. final def ne(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  14. def needsOuterIfReferenced(cls: ClassSymbol)(implicit ctx: Context): Boolean

    Class needs an outer pointer, provided there is a reference to an outer this in it.

  15. final def notify(): Unit

    Definition Classes
    AnyRef
  16. final def notifyAll(): Unit

    Definition Classes
    AnyRef
  17. def outer(implicit ctx: Context): OuterOps

  18. def outerAccessor(cls: ClassSymbol)(implicit ctx: Context): Symbol

    The outer accessor of class cls.

    The outer accessor of class cls. To find it is a bit tricky. The class might have been moved with new owners between ExplicitOuter and Erasure, where the method is also called. For instance, it might have been part of a by-name argument, and therefore be moved under a closure method by ElimByName. In that case looking up the method again at Erasure with the fully qualified name outerAccName will fail, because the outerAccName's result is phase dependent. In that case we use a backup strategy where we search all definitions in the class to find the one with the OuterAccessor flag.

  19. def referencesOuter(cls: Symbol, tree: ast.tpd.Tree)(implicit ctx: Context): Boolean

    Tree references an outer class of cls which is not a static owner.

  20. final def synchronized[T0](arg0: ⇒ T0): T0

    Definition Classes
    AnyRef
  21. def toString(): String

    Definition Classes
    AnyRef → Any
  22. final def wait(): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  23. final def wait(arg0: Long, arg1: Int): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  24. final def wait(arg0: Long): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from AnyRef

Inherited from Any

Ungrouped