diff options
author | Martin Odersky <odersky@gmail.com> | 2011-01-24 16:40:32 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2011-01-24 16:40:32 +0000 |
commit | 6300d5e277ed7241f83b2286efe2307b0392484e (patch) | |
tree | bb7a06cff620b22319311f8e265cf6131bc21479 /src/compiler/scala/tools/nsc/interactive/CompilerControl.scala | |
parent | 19b45e964354069137266b101ca06d8541d5d1c3 (diff) | |
download | scala-6300d5e277ed7241f83b2286efe2307b0392484e.tar.gz scala-6300d5e277ed7241f83b2286efe2307b0392484e.tar.bz2 scala-6300d5e277ed7241f83b2286efe2307b0392484e.zip |
Better behavior on completions.
Diffstat (limited to 'src/compiler/scala/tools/nsc/interactive/CompilerControl.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/interactive/CompilerControl.scala | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/src/compiler/scala/tools/nsc/interactive/CompilerControl.scala b/src/compiler/scala/tools/nsc/interactive/CompilerControl.scala index 3171df2fdc..a0104c2395 100644 --- a/src/compiler/scala/tools/nsc/interactive/CompilerControl.scala +++ b/src/compiler/scala/tools/nsc/interactive/CompilerControl.scala @@ -53,11 +53,11 @@ trait CompilerControl { self: Global => * if it does not yet exist create a new one atomically * Note: We want to get roid of this operation as it messes compiler invariants. */ - @deprecated("use getUnitOf(s) instead") + @deprecated("use getUnitOf(s) or onUnitOf(s) instead") def unitOf(s: SourceFile): RichCompilationUnit = getOrCreateUnitOf(s) /** The compilation unit corresponding to a position */ - @deprecated("use getUnitOf(pos.source) instead") + @deprecated("use getUnitOf(pos.source) or onUnitOf(pos.source) instead") def unitOf(pos: Position): RichCompilationUnit = getOrCreateUnitOf(pos.source) /** Removes the CompilationUnit corresponding to the given SourceFile @@ -75,14 +75,14 @@ trait CompilerControl { self: Global => } /** Locate smallest tree that encloses position + * @pre Position must be loaded */ - def locateTree(pos: Position): Tree = - new Locator(pos) locateIn unitOf(pos).body + def locateTree(pos: Position): Tree = onUnitOf(pos.source) { unit => new Locator(pos) locateIn unit.body } /** Locates smallest context that encloses position as an optional value. */ def locateContext(pos: Position): Option[Context] = - locateContext(unitOf(pos).contexts, pos) + for (unit <- getUnit(pos.source); cx <- locateContext(unit.contexts, pos)) yield cx /** Returns the smallest context that contains given `pos`, throws FatalError if none exists. */ @@ -113,8 +113,13 @@ trait CompilerControl { self: Global => /** Sets sync var `response` to the fully attributed & typechecked tree contained in `source`. * @pre `source` needs to be loaded. */ - def askType(source: SourceFile, forceReload: Boolean, response: Response[Tree]) = + def askType(source: SourceFile, forceReload: Boolean, response: Response[Tree]) = { + if (debugIDE) { + println("ask type called") + new Exception().printStackTrace() + } scheduler postWorkItem new AskTypeItem(source, forceReload, response) + } /** Sets sync var `response` to the position of the definition of the given link in * the given sourcefile. |