Skip to content

Commit 5d5bc61

Browse files
committed
Fix #1286: Warn on inexistent imports that are not used.
1 parent b300542 commit 5d5bc61

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

src/dotty/tools/dotc/transform/FirstTransform.scala

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,16 @@ class FirstTransform extends MiniPhaseTransform with InfoTransformer with Annota
160160
ast.Trees.flatten(reorderAndComplete(trees)(ctx.withPhase(thisTransformer.next)))
161161

162162
override def transformOther(tree: Tree)(implicit ctx: Context, info: TransformerInfo) = tree match {
163-
case tree: Import => EmptyTree
163+
case tree: Import =>
164+
val exprTpe = tree.expr.tpe
165+
tree.selectors.foreach {
166+
case ident @ Ident(name) if name != nme.WILDCARD && !exprTpe.member(name).exists =>
167+
ctx.warning(s"$name is not a member of ${tree.expr.show}", ident.pos)
168+
case Pair(ident @ Ident(name), _) if name != nme.WILDCARD && !exprTpe.member(name).exists =>
169+
ctx.warning(s"$name is not a member of ${tree.expr.show}", ident.pos)
170+
case _ =>
171+
}
172+
EmptyTree
164173
case tree: NamedArg => transform(tree.arg)
165174
case tree => tree
166175
}

tests/pos/i1286.scala

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import scala.idontexist // warn
2+
import scala.io.Idontexist // warn
3+
4+
import scala.io
5+
import io.Idontexist2 // warn
6+
7+
import scala.io.{ AnsiColor, Idontexist3 } // warn
8+
9+
import scala.io.{ Idontexist4 => Foo } // warn
10+
import scala.io.{ Idontexist5 => _ } // warn
11+
12+
object Test

0 commit comments

Comments
 (0)