From d433eb14c8a069f349979282b0acb71cedb43b49 Mon Sep 17 00:00:00 2001 From: Sean McDirmid Date: Thu, 2 Nov 2006 15:12:06 +0000 Subject: Some of these haven't changed, but SVN is too s... Some of these haven't changed, but SVN is too stupid to care. Adding IDE hooks to Global. --- .../scala/tools/nsc/typechecker/Namers.scala | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'src/compiler/scala/tools/nsc/typechecker/Namers.scala') diff --git a/src/compiler/scala/tools/nsc/typechecker/Namers.scala b/src/compiler/scala/tools/nsc/typechecker/Namers.scala index 581b1f9637..b01227da01 100644 --- a/src/compiler/scala/tools/nsc/typechecker/Namers.scala +++ b/src/compiler/scala/tools/nsc/typechecker/Namers.scala @@ -42,7 +42,9 @@ trait Namers requires Analyzer { mapOver(tp) } } - protected def doEnterValueParams = true; + /** overridden by IDE to not manually enter value parameters */ + protected final def doEnterValueParams = !inIDE; + protected def inIDE = false; class Namer(val context: Context) { @@ -196,8 +198,14 @@ trait Namers requires Analyzer { m } - def enterSyms(trees: List[Tree]): Namer = - (this /: trees) ((namer, tree) => namer.enterSym(tree)) + def enterSyms(trees: List[Tree]): Namer = { + var namer : Namer = this + for (val tree <- trees) { + val txt = namer.enterSym(tree) + if (!(txt eq namer.context)) namer = new Namer(txt) + } + namer + } def newTypeSkolems(tparams: List[Symbol]): List[Symbol] = { val tskolems = tparams map (.newTypeSkolem) @@ -220,7 +228,7 @@ trait Namers requires Analyzer { def deSkolemize: TypeMap = new DeSkolemizeMap(applicableTypeParams(context.owner)) - def enterSym(tree: Tree): Namer = { + def enterSym(tree: Tree): Context = { def finishWith(tparams: List[AbsTypeDef]): unit = { val sym = tree.symbol @@ -313,11 +321,11 @@ trait Namers requires Analyzer { case imp @ Import(_, _) => tree.symbol = NoSymbol.newImport(tree.pos) tree.symbol.setInfo(namerOf(tree.symbol).typeCompleter(tree)) - return new Namer(context.makeNewImport(imp)) + return (context.makeNewImport(imp)) case _ => } } - this + this.context } // --- Lazy Type Assignment -------------------------------------------------- -- cgit v1.2.3