diff options
author | Martin Odersky <odersky@gmail.com> | 2009-08-03 16:21:42 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2009-08-03 16:21:42 +0000 |
commit | ec5e34144e6a8673ee1078fcf0d79411869b9829 (patch) | |
tree | 196eb2fa39a481848ad7742777d4b214e8176ec6 /src/compiler/scala/tools/nsc/interactive/Global.scala | |
parent | ac89702827559cab8835edecb35cc09a1ca3fe10 (diff) | |
download | scala-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-x | src/compiler/scala/tools/nsc/interactive/Global.scala | 14 |
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] = { |