Skip to content

Commit 4daeeb3

Browse files
Merge pull request #2459 from dotty-staging/fix-2396
Fix #2396: don't create refernces to packages in ElimStaticThis
2 parents a9fabb4 + 408be44 commit 4daeeb3

File tree

3 files changed

+32
-2
lines changed

3 files changed

+32
-2
lines changed

compiler/src/dotty/tools/dotc/transform/ElimStaticThis.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@ class ElimStaticThis extends MiniPhaseTransform {
2727
override def transformIdent(tree: tpd.Ident)(implicit ctx: Context, info: TransformerInfo): tpd.Tree = {
2828
if (ctx.owner.enclosingMethod.is(JavaStatic)) {
2929
tree.tpe match {
30-
case TermRef(thiz: ThisType, _) if thiz.cls.is(ModuleClass) =>
30+
case TermRef(thiz: ThisType, _) if thiz.cls.is(ModuleClass, JavaDefined) =>
3131
ref(thiz.cls.sourceModule).select(tree.symbol)
3232
case TermRef(thiz: ThisType, _) =>
33-
assert(tree.symbol.is(Flags.JavaStatic))
33+
assert(tree.symbol.is(Flags.JavaStatic) || thiz.cls.is(JavaDefined))
3434
tree
3535
case _ => tree
3636
}

tests/run/i2396.scala

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
class B {
2+
val buzz = Some(Bees.Bee("buzz")).collect {
3+
case Bees.Bee(value) => value
4+
}
5+
}
6+
7+
object Test {
8+
def main(args: Array[String]): Unit = {
9+
new B
10+
}
11+
}
12+
13+
object Bees {
14+
case class Bee(value: String)
15+
}

tests/run/i2396c.scala

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
class Bees {
2+
import Test._
3+
4+
def f: PartialFunction[Bee, Unit] = {
5+
case Test.Bee(_) => ""
6+
// case Bee(_) => "" // This one works
7+
}
8+
9+
f(new Bee("buzz"))
10+
}
11+
12+
object Test {
13+
case class Bee(value: String)
14+
def main(args: Array[String]): Unit = new Bees
15+
}

0 commit comments

Comments
 (0)