From 460edf36cb9e19ceea58dcce0cc4c9d6c5b234ac Mon Sep 17 00:00:00 2001 From: Iulian Dragos Date: Thu, 28 Oct 2010 17:41:51 +0000 Subject: Correctly find completion proposals for ImportT... Correctly find completion proposals for ImportType. review by odersky --- .../scala/tools/nsc/interactive/Global.scala | 31 +++++++++++++--------- 1 file changed, 18 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/compiler/scala/tools/nsc/interactive/Global.scala b/src/compiler/scala/tools/nsc/interactive/Global.scala index 6bd7e17e9b..a31e3331c3 100644 --- a/src/compiler/scala/tools/nsc/interactive/Global.scala +++ b/src/compiler/scala/tools/nsc/interactive/Global.scala @@ -537,24 +537,28 @@ self => !sym.name.toString.contains("$") val pre = stabilizedType(tree) - val ownerTpe = if (tree.tpe != null) tree.tpe else pre + val ownerTpe = tree.tpe match { + case analyzer.ImportType(expr) => expr.tpe + case null => pre + case _ => tree.tpe + } for (sym <- ownerTpe.decls if shouldDisplay(sym)) addTypeMember(sym, pre, false, NoSymbol) + members.values.toList #:: { + for (sym <- ownerTpe.members if shouldDisplay(sym)) + addTypeMember(sym, pre, true, NoSymbol) members.values.toList #:: { - for (sym <- ownerTpe.members if shouldDisplay(sym)) - addTypeMember(sym, pre, true, NoSymbol) - members.values.toList #:: { - val applicableViews: List[SearchResult] = - new ImplicitSearch(tree, functionType(List(ownerTpe), AnyClass.tpe), isView = true, context.makeImplicit(reportAmbiguousErrors = false)) - .allImplicits - for (view <- applicableViews) { - val vtree = viewApply(view) - val vpre = stabilizedType(vtree) - for (sym <- vtree.tpe.members) { - addTypeMember(sym, vpre, false, view.tree.symbol) - } + val applicableViews: List[SearchResult] = + new ImplicitSearch(tree, functionType(List(ownerTpe), AnyClass.tpe), isView = true, context.makeImplicit(reportAmbiguousErrors = false)) + .allImplicits + for (view <- applicableViews) { + val vtree = viewApply(view) + val vpre = stabilizedType(vtree) + for (sym <- vtree.tpe.members) { + addTypeMember(sym, vpre, false, view.tree.symbol) } + } Stream(members.values.toList) } } @@ -590,6 +594,7 @@ self => applyPhase(namerPhase, unit) } + /** Return fully attributed tree at given position * (i.e. largest tree that's contained by position) */ -- cgit v1.2.3