Package

xsbt

Permalink

package xsbt

Visibility
  1. Public
  2. All

Type Members

  1. final class API extends AnyRef

    Permalink
  2. final class Analyzer extends LocateClassFile

    Permalink
  3. sealed abstract class CallbackGlobal extends Global with GlobalCompat

    Permalink
  4. final class CompilerInterface extends AnyRef

    Permalink
  5. class ConsoleInterface extends AnyRef

    Permalink
  6. final class Dependency extends LocateClassFile with GlobalHelpers

    Permalink

    Extracts dependency information from each compilation unit.

    Extracts dependency information from each compilation unit.

    This phase uses CompilationUnit.depends and CallbackGlobal.inheritedDependencies to collect all symbols that given compilation unit depends on. Those symbols are guaranteed to represent Class-like structures.

    The CallbackGlobal.inheritedDependencies is populated by the API phase. See, ExtractAPI class.

    When dependency symbol is processed, it is mapped back to either source file where it's defined in (if it's available in current compilation run) or classpath entry where it originates from. The Symbol->Classfile mapping is implemented by LocateClassFile that we inherit from.

  7. class ExtractAPI[GlobalType <: CallbackGlobal] extends AnyRef

    Permalink

    Extracts API representation out of Symbols and Types.

    Extracts API representation out of Symbols and Types.

    Each compilation unit should be processed by a fresh instance of this class.

    This class depends on instance of CallbackGlobal instead of regular Global because it has a call to addInheritedDependencies method defined in CallbackGlobal. In the future we should refactor this code so inherited dependencies are just accumulated in a buffer and exposed to a client that can pass them to an instance of CallbackGlobal it holds.

  8. class ExtractUsedNames[GlobalType <: CallbackGlobal] extends GlobalHelpers

    Permalink

    Extracts simple names used in given compilation unit.

    Extracts simple names used in given compilation unit.

    Extracts simple (unqualified) names mentioned in given in non-definition position by collecting all symbols associated with non-definition trees and extracting names from all collected symbols.

    If given symbol is mentioned both in definition and in non-definition position (e.g. in member selection) then that symbol is collected. It means that names of symbols defined and used in the same compilation unit are extracted. We've considered not extracting names of those symbols as an optimization strategy. It turned out that this is not correct. Check https://github.com/gkossakowski/sbt/issues/3 for an example of scenario where it matters.

    All extracted names are returned in _decoded_ form. This way we stay consistent with the rest of incremental compiler which works with names in decoded form.

    Names mentioned in Import nodes are handled properly but require some special logic for two reasons:

    1. import node itself has a term symbol associated with it with a name <import>. I (gkossakowski) tried to track down what role this symbol serves but I couldn't. It doesn't look like there are many places in Scala compiler that refer to that kind of symbols explicitly. 2. ImportSelector is not subtype of Tree therefore is not processed by Tree.foreach

    Another type of tree nodes that requires special handling is TypeTree. TypeTree nodes has a little bit odd representation:

    1. TypeTree.hasSymbol always returns false even when TypeTree.symbol returns a symbol 2. The original tree from which given TypeTree was derived is stored in TypeTree.original but Tree.forech doesn't walk into original tree so we missed it

    The tree walking algorithm walks into TypeTree.original explicitly.

  9. sealed trait GlobalCompat extends AnyRef

    Permalink
  10. trait GlobalHelpers extends AnyRef

    Permalink
  11. class InterfaceCompileCancelled extends CompileCancelled

    Permalink
  12. class InterfaceCompileFailed extends CompileFailed

    Permalink
  13. abstract class LocateClassFile extends AnyRef

    Permalink

    Contains utility methods for looking up class files corresponding to Symbols.

  14. class ScaladocInterface extends AnyRef

    Permalink

Value Members

  1. object API

    Permalink
  2. object Analyzer

    Permalink
  3. object Command

    Permalink
  4. object Dependency

    Permalink
  5. object Log

    Permalink
  6. object MakeSettings

    Permalink
  7. object Message

    Permalink

Ungrouped