summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/interactive/Global.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2009-08-03 16:21:42 +0000
committerMartin Odersky <odersky@gmail.com>2009-08-03 16:21:42 +0000
commitec5e34144e6a8673ee1078fcf0d79411869b9829 (patch)
tree196eb2fa39a481848ad7742777d4b214e8176ec6 /src/compiler/scala/tools/nsc/interactive/Global.scala
parentac89702827559cab8835edecb35cc09a1ca3fe10 (diff)
downloadscala-ec5e34144e6a8673ee1078fcf0d79411869b9829.tar.gz
scala-ec5e34144e6a8673ee1078fcf0d79411869b9829.tar.bz2
scala-ec5e34144e6a8673ee1078fcf0d79411869b9829.zip
Fixed some problems with scope completion
Diffstat (limited to 'src/compiler/scala/tools/nsc/interactive/Global.scala')
-rwxr-xr-xsrc/compiler/scala/tools/nsc/interactive/Global.scala14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/compiler/scala/tools/nsc/interactive/Global.scala b/src/compiler/scala/tools/nsc/interactive/Global.scala
index d055e5ec41..40af4d389a 100755
--- a/src/compiler/scala/tools/nsc/interactive/Global.scala
+++ b/src/compiler/scala/tools/nsc/interactive/Global.scala
@@ -201,7 +201,7 @@ self =>
compileRunner = newRunnerThread
ex match {
case _ : ValidateError => // This will have been reported elsewhere
- case _ => inform("Fatal Error: "+ex)
+ case _ => ex.printStackTrace(); inform("Fatal Error: "+ex)
}
}
}
@@ -331,13 +331,18 @@ self =>
respond(result) { scopeMembers(pos) }
}
+ val Dollar = newTermName("$")
+
/** Return all members visible without prefix in context enclosing `pos`. */
def scopeMembers(pos: Position): List[ScopeMember] = {
typedTreeAt(pos) // to make sure context is entered
val context = doLocateContext(pos)
val locals = new LinkedHashMap[Name, ScopeMember]
def addScopeMember(sym: Symbol, pre: Type, viaImport: Tree) =
- if (!(locals contains sym.name)) {
+ if (!sym.name.decode.containsName(Dollar) &&
+ !sym.hasFlag(Flags.SYNTHETIC) &&
+ !locals.contains(sym.name)) {
+ //println("adding scope member: "+pre+" "+sym)
locals(sym.name) = new ScopeMember(
sym,
pre.memberType(sym),
@@ -360,11 +365,14 @@ self =>
addScopeMember(sym, pre, imp.qual)
}
}
- locals.valuesIterator.toList
+ val result = locals.valuesIterator.toList
+ if (debugIDE) for (m <- result) println(m)
+ result
}
def getTypeCompletion(pos: Position, result: Response[List[Member]]) {
respond(result) { typeMembers(pos) }
+ if (debugIDE) scopeMembers(pos)
}
def typeMembers(pos: Position): List[TypeMember] = {