Scala Compiler2.13.18 < Back


# Packages

-  package root

  The Scala compiler and reflection APIs.

  The Scala compiler and reflection APIs.

  Definition Classes
    root
-  package scala
  Definition Classes
    root
-  package tools
  Definition Classes
    scala
-  package nsc
  Definition Classes
    tools
-  package transform
  Definition Classes
    nsc
-  abstract class SpecializeTypes extends SubComponent with InfoTransform with TypingTransformers

  Specialize code on types.

  Specialize code on types.

  Make sure you've read the thesis:

  Iulian Dragos: Compiling Scala for Performance (chapter 4)

  There are some things worth noting, (possibly) not mentioned there: 0) Make sure you understand the meaning of various `SpecializedInfo` descriptors defined below.

  1) Specializing traits by introducing bridges in specialized methods of the specialized trait may introduce problems during mixin composition. Concretely, it may cause cyclic calls and result in a stack overflow. See ticket #4351. This was solved by introducing an `Abstract` specialized info descriptor. Instead of generating a bridge in the trait, an abstract method is generated.

  2) Specialized private members sometimes have to be switched to protected. In some cases, even this is not enough. Example:

      class A[@specialized T](protected val d: T) {
        def foo(that: A[T]) = that.d
      }

  Specialization will generate a specialized class and a specialized method:

      class A$mcI$sp(protected val d: Int) extends A[Int] {
        def foo(that: A[Int]) = foo$mcI$sp(that)
        def foo(that: A[Int]) = that.d
      }

  Above, `A$mcI$sp` cannot access `d`, so the method cannot be typechecked.

  Definition Classes
    transform
- Abstract
- Duplicator
- Forward
- Implementation
- ImplementationAdapter
- NormalizedMember
- Overload
- Phase
- SpecialOverload
- SpecialOverride
- SpecialSuperAccessor
- SpecializationDuplicator
- SpecializationPhase
- SpecializationTransformer
- SpecializedAccessor
- SpecializedInfo
- SpecializedInnerClass
- SpecializedSuperConstructorCallArgument
- StdPhase
- ThicketTransformer
- TypeEnv
- TypingTransformer
- UnifyError

o

scala.tools.nsc.transform.SpecializeTypes

# UnifyError

###

#### case object UnifyError extends ControlThrowable with Product with Serializable

Source
  SpecializeTypes.scala

Linear Supertypes
Product, Equals, ControlThrowable, java.lang.Throwable, java.io.Serializable, AnyRef, Any

Ordering

1. Alphabetic
2. By Inheritance

Inherited

1. UnifyError
2. Product
3. Equals
4. ControlThrowable
5. Throwable
6. Serializable
7. AnyRef
8. Any

1. Hide All
2. Show All

Visibility

1. Public
2. Protected

### 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 addSuppressed(arg0: java.lang.Throwable): Unit
   Definition Classes
     Throwable
5.  final def asInstanceOf[T0]: T0
   Definition Classes
     Any
6.  def clone(): AnyRef
   Attributes
     protected[lang]
   Definition Classes
     AnyRef
   Annotations
     @throws(classOf[java.lang.CloneNotSupportedException]) @native()
7.  final def eq(arg0: AnyRef): Boolean
   Definition Classes
     AnyRef
8.  def equals(arg0: AnyRef): Boolean
   Definition Classes
     AnyRef → Any
9.  def fillInStackTrace(): java.lang.Throwable
   Definition Classes
     Throwable
10.  def finalize(): Unit
    Attributes
      protected[lang]
    Definition Classes
      AnyRef
    Annotations
      @throws(classOf[java.lang.Throwable])
11.  def getCause(): java.lang.Throwable
    Definition Classes
      Throwable
12.  final def getClass(): Class[_ <: AnyRef]
    Definition Classes
      AnyRef → Any
    Annotations
      @native()
13.  def getLocalizedMessage(): String
    Definition Classes
      Throwable
14.  def getMessage(): String
    Definition Classes
      Throwable
15.  def getStackTrace(): Array[StackTraceElement]
    Definition Classes
      Throwable
16.  final def getSuppressed(): Array[java.lang.Throwable]
    Definition Classes
      Throwable
17.  def initCause(arg0: java.lang.Throwable): java.lang.Throwable
    Definition Classes
      Throwable
18.  final def isInstanceOf[T0]: Boolean
    Definition Classes
      Any
19.  final def ne(arg0: AnyRef): Boolean
    Definition Classes
      AnyRef
20.  final def notify(): Unit
    Definition Classes
      AnyRef
    Annotations
      @native()
21.  final def notifyAll(): Unit
    Definition Classes
      AnyRef
    Annotations
      @native()
22.  def printStackTrace(arg0: PrintWriter): Unit
    Definition Classes
      Throwable
23.  def printStackTrace(arg0: PrintStream): Unit
    Definition Classes
      Throwable
24.  def printStackTrace(): Unit
    Definition Classes
      Throwable
25.  def productElementName(n: Int): String
    Definition Classes
      Product
26.  def productElementNames: Iterator[String]
    Definition Classes
      Product
27.  def setStackTrace(arg0: Array[StackTraceElement]): Unit
    Definition Classes
      Throwable
28.  final def synchronized[T0](arg0: => T0): T0
    Definition Classes
      AnyRef
29.  def toString(): String
    Definition Classes
      Throwable → AnyRef → Any
30.  final def wait(): Unit
    Definition Classes
      AnyRef
    Annotations
      @throws(classOf[java.lang.InterruptedException])
31.  final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
      AnyRef
    Annotations
      @throws(classOf[java.lang.InterruptedException])
32.  final def wait(arg0: Long): Unit
    Definition Classes
      AnyRef
    Annotations
      @throws(classOf[java.lang.InterruptedException]) @native()

### Inherited from Product

### Inherited from Equals

### Inherited from ControlThrowable

### Inherited from java.lang.Throwable

### Inherited from java.io.Serializable

### Inherited from AnyRef

### Inherited from Any

### Ungrouped