summaryrefslogtreecommitdiff
path: root/sources/scala/tools/nsc/typechecker/Analyzer.scala
diff options
context:
space:
mode:
Diffstat (limited to 'sources/scala/tools/nsc/typechecker/Analyzer.scala')
-rw-r--r--sources/scala/tools/nsc/typechecker/Analyzer.scala22
1 files changed, 21 insertions, 1 deletions
diff --git a/sources/scala/tools/nsc/typechecker/Analyzer.scala b/sources/scala/tools/nsc/typechecker/Analyzer.scala
index 108781e275..a0f3f19a8f 100644
--- a/sources/scala/tools/nsc/typechecker/Analyzer.scala
+++ b/sources/scala/tools/nsc/typechecker/Analyzer.scala
@@ -8,13 +8,33 @@ package scala.tools.nsc.typechecker;
/** The main attribution phase.
*/
abstract class Analyzer
- extends SubComponent
+ extends AnyRef
with Contexts
with Namers
with Typers
with Infer
with Variances
with EtaExpansion {
+
val global: Global;
+ import global._;
+
+ object namerFactory extends SubComponent {
+ val global: Analyzer.this.global.type = Analyzer.this.global;
+ val phaseName = "namer";
+ def newPhase(_prev: Phase): StdPhase = new StdPhase(_prev) {
+ def apply(unit: CompilationUnit): unit =
+ new Namer(startContext.make(unit)).enterSym(unit.body);
+ }
+ }
+
+ object typerFactory extends SubComponent {
+ val global: Analyzer.this.global.type = Analyzer.this.global;
+ val phaseName = "typer";
+ def newPhase(_prev: Phase): StdPhase = new StdPhase(_prev) {
+ def apply(unit: CompilationUnit): unit =
+ unit.body = newTyper(startContext.make(unit)).typed(unit.body)
+ }
+ }
}