diff --git a/compiler/src/dotty/tools/dotc/typer/Typer.scala b/compiler/src/dotty/tools/dotc/typer/Typer.scala index cff9407e9328..059c4f83f64c 100644 --- a/compiler/src/dotty/tools/dotc/typer/Typer.scala +++ b/compiler/src/dotty/tools/dotc/typer/Typer.scala @@ -3696,8 +3696,12 @@ class Typer extends Namer val Select(qual, nme.apply) = tree; @unchecked val tycon = tree.tpe.widen.finalResultType.underlyingClassRef(refinementOK = false) val tpt = qual match - case Ident(name) => cpy.Ident(qual)(name.toTypeName) - case Select(pre, name) => cpy.Select(qual)(pre, name.toTypeName) + case Ident(name) => + cpy.Ident(qual)(name.toTypeName) + case Select(pre, name) => + cpy.Select(qual)(pre, name.toTypeName) + case qual: This if qual.symbol.is(ModuleClass) => + cpy.Ident(qual)(qual.symbol.name.sourceModuleName.toTypeName) typed( untpd.Select( untpd.New(untpd.TypedSplice(tpt.withType(tycon))), diff --git a/tests/pos/i11420.scala b/tests/pos/i11420.scala new file mode 100644 index 000000000000..59960c262710 --- /dev/null +++ b/tests/pos/i11420.scala @@ -0,0 +1,7 @@ +class Foo { + class Bar(i: Int) + + object Bar { + def zero = Bar(0) + } +} \ No newline at end of file