class ExtractAPI[GlobalType <: Global] extends Compat with ClassName with GlobalHelpers
Extracts full (including private members) API representation out of Symbols and Types.
API for each class is extracted separately. Inner classes are represented as an empty (without members) member of the outer class and as a separate class with full API representation. For example:
class A { class B { def foo: Int = 123 } }
Is represented as:
// className = A class A { class B } // className = A.B class A.B { def foo: Int }
Each compilation unit should be processed by a fresh instance of this class.
NOTE: This class extract *full* API representation. In most of other places in the incremental compiler, only non-private (accessible from other compilation units) members are relevant. Other parts of the incremental compiler filter out private definitions before processing API structures. Check SameAPI for an example.
- Alphabetic
- By Inheritance
- ExtractAPI
- GlobalHelpers
- ClassName
- Compat
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new ExtractAPI(global: GlobalType, sourceFile: VirtualFile)
Type Members
- class SuppressSymbolRef extends GlobalType.TypeMap
Replace all types that directly refer to the
forbidden
symbol byNoType
.Replace all types that directly refer to the
forbidden
symbol byNoType
. (a specialized version of substThisAndSym)
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- def allExtractedNonLocalClasses: Set[ClassLike]
- def allExtractedNonLocalSymbols: Set[GlobalType.Symbol]
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def className(s: GlobalType.Symbol): GlobalType.Name
Create a (source) name for a class symbol
s
.Create a (source) name for a class symbol
s
.- Attributes
- protected
- Definition Classes
- ClassName
- def classNameAsSeenIn(in: GlobalType.Symbol, s: GlobalType.Symbol): String
Create a (source) name for the class symbol
s
with a prefix determined by the class symbolin
.Create a (source) name for the class symbol
s
with a prefix determined by the class symbolin
.If
s
represents a package objectpkg3
, then the returned name will bepkg1.pkg2.pkg3.package
. Ifs
represents a classFoo
nested in package objectpkg3
then the returned name ispkg1.pkg2.pk3.Foo
.Note that some objects with special access rights are encoded in names (like qualified privates
private[qualifier]
). In order to get the right original names, we need to useunexpandedName
.- Attributes
- protected
- Definition Classes
- ClassName
- def classNameAsString(s: GlobalType.Symbol): String
Create a String (source) name for a class symbol
s
.Create a String (source) name for a class symbol
s
.- Attributes
- protected
- Definition Classes
- ClassName
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- def constructorName(cls: GlobalType.Symbol): GlobalType.Name
Given a class symbol
cls
, construct a name representing this constructor.Given a class symbol
cls
, construct a name representing this constructor. For a class:a.b.Foo
this is:
a;b;Foo;init;
The prefix is important to avoid name hashing all constructors together (see #97), the weird format is necessary to avoid scalac or zinc trying to interpret this name (in particular we should not use '.' and we should not use '<init>'), we use ';' because it is one of the few characters that cannot appear in a valid JVM name.
- Attributes
- protected
- Definition Classes
- ClassName
- def constructorNameAsString(cls: GlobalType.Symbol): String
- Attributes
- protected
- Definition Classes
- ClassName
- def enclOrModuleClass(s: GlobalType.Symbol): GlobalType.Symbol
Return the enclosing class or the module class if it's a module.
Return the enclosing class or the module class if it's a module.
- Definition Classes
- GlobalHelpers
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def extractAllClassesOf(in: GlobalType.Symbol, c: GlobalType.Symbol): Unit
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- def flatclassName(s: GlobalType.Symbol, sep: Char, dollarRequired: Boolean): String
- Attributes
- protected
- Definition Classes
- ClassName
- def flatname(s: GlobalType.Symbol, separator: Char): String
Creates a flat (binary) name for a class symbol
s
.Creates a flat (binary) name for a class symbol
s
.- Attributes
- protected
- Definition Classes
- ClassName
- final def forceStructures(): Unit
Force all lazy structures.
Force all lazy structures. This is necessary so that we see the symbols/types at this phase and so that we don't hold on to compiler objects and classes
- Annotations
- @tailrec()
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- val global: GlobalType
- Definition Classes
- ExtractAPI → GlobalHelpers → ClassName → Compat
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def ignoredSymbol(symbol: GlobalType.Symbol): Boolean
Return true if symbol shall be ignored, false otherwise.
Return true if symbol shall be ignored, false otherwise.
- Definition Classes
- GlobalHelpers
- Annotations
- @inline()
- def ignoredType(tpe: GlobalType.Type): Boolean
Return true if type shall be ignored, false otherwise.
Return true if type shall be ignored, false otherwise.
- Definition Classes
- GlobalHelpers
- Annotations
- @inline()
- def isEmptyName(name: GlobalType.Name): Boolean
Return true if name is empty, false otherwise.
Return true if name is empty, false otherwise.
- Definition Classes
- GlobalHelpers
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def isSyntheticCoreClass(sym: GlobalType.Symbol): Boolean
- Definition Classes
- GlobalHelpers
- def isTopLevelModule(sym: GlobalType.Symbol): Boolean
- Attributes
- protected
- Definition Classes
- ClassName
- def linearizedAncestorTypes(info: GlobalType.Type): List[GlobalType.Type]
- def mainClasses: Set[String]
- def mangledName(s: GlobalType.Symbol): GlobalType.Name
Mangle a JVM symbol name in a format better suited for internal uses by sbt.
Mangle a JVM symbol name in a format better suited for internal uses by sbt.
- Attributes
- protected
- Definition Classes
- ClassName
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- def processMacroExpansion(in: GlobalType.Tree)(func: (GlobalType.Tree) => Unit): Boolean
Returns true if given tree contains macro attchment.
Returns true if given tree contains macro attchment. In such case calls func on tree from attachment.
- Definition Classes
- GlobalHelpers
- def processOriginalTreeAttachment(in: GlobalType.Tree)(func: (GlobalType.Tree) => Unit): Unit
If given tree contains object tree attachment calls func on tree from attachment.
If given tree contains object tree attachment calls func on tree from attachment.
- Attributes
- protected
- Definition Classes
- Compat
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- object Feedback
Define common error messages for error reporting and assertions.
Define common error messages for error reporting and assertions.
- Definition Classes
- GlobalHelpers
- object MacroExpansionOf
- Definition Classes
- GlobalHelpers