diff --git a/compiler/src/dotty/tools/dotc/transform/PostTyper.scala b/compiler/src/dotty/tools/dotc/transform/PostTyper.scala index 3807a25b09c2..013f4928c3df 100644 --- a/compiler/src/dotty/tools/dotc/transform/PostTyper.scala +++ b/compiler/src/dotty/tools/dotc/transform/PostTyper.scala @@ -278,10 +278,14 @@ class PostTyper extends MacroTransform with IdentityDenotTransformer { thisPhase ) case Import(expr, selectors) => val exprTpe = expr.tpe + val seen = mutable.Set.empty[Name] def checkIdent(ident: untpd.Ident): Unit = { val name = ident.name.asTermName if (name != nme.WILDCARD && !exprTpe.member(name).exists && !exprTpe.member(name.toTypeName).exists) ctx.error(NotAMember(exprTpe, name, "value"), ident.pos) + if (seen(ident.name)) + ctx.error(s"${ident.show} is renamed twice", ident.pos) + seen += ident.name } selectors.foreach { case ident: untpd.Ident => checkIdent(ident) diff --git a/tests/neg/i3745a.scala b/tests/neg/i3745a.scala new file mode 100644 index 000000000000..6407645a5a65 --- /dev/null +++ b/tests/neg/i3745a.scala @@ -0,0 +1 @@ +import scala.collection.{ Seq, Seq } // error: Seq is renamed twice diff --git a/tests/neg/i3745b.scala b/tests/neg/i3745b.scala new file mode 100644 index 000000000000..a2148178e205 --- /dev/null +++ b/tests/neg/i3745b.scala @@ -0,0 +1 @@ +import scala.collection.{ Seq, Seq => _ } // error: Seq is renamed twice diff --git a/tests/neg/i3745c.scala b/tests/neg/i3745c.scala new file mode 100644 index 000000000000..fd033e877266 --- /dev/null +++ b/tests/neg/i3745c.scala @@ -0,0 +1 @@ +import scala.collection.{ Seq => A, Seq => B } // error: Seq is renamed twice