diff --git a/compiler/src/dotty/tools/dotc/transform/CrossCastAnd.scala b/compiler/src/dotty/tools/dotc/transform/CrossCastAnd.scala index f23bb3d60b3c..3b9ac6740723 100644 --- a/compiler/src/dotty/tools/dotc/transform/CrossCastAnd.scala +++ b/compiler/src/dotty/tools/dotc/transform/CrossCastAnd.scala @@ -22,7 +22,7 @@ class CrossCastAnd extends MiniPhase { lazy val qtype = tree.qualifier.tpe.widen val sym = tree.symbol - if (sym.is(Flags.Private) && qtype.typeSymbol != sym.owner) + if (sym.is(Flags.Private) && !sym.isConstructor && qtype.typeSymbol != sym.owner) cpy.Select(tree)(tree.qualifier.cast(AndType(qtype.baseType(sym.owner), tree.qualifier.tpe)), tree.name) else tree } diff --git a/tests/run/i8064.scala b/tests/run/i8064.scala new file mode 100644 index 000000000000..6d32e7fc17c7 --- /dev/null +++ b/tests/run/i8064.scala @@ -0,0 +1,4 @@ + +class Foo[A] private(x: Int) { self => def this() = this(0) } + +@main def Test = new Foo[String]()