diff --git a/compiler/src/dotty/tools/dotc/typer/ReTyper.scala b/compiler/src/dotty/tools/dotc/typer/ReTyper.scala index 7be29c478f24..bce41cdbce92 100644 --- a/compiler/src/dotty/tools/dotc/typer/ReTyper.scala +++ b/compiler/src/dotty/tools/dotc/typer/ReTyper.scala @@ -65,6 +65,9 @@ class ReTyper extends Typer with ReChecking { override def typedTypeTree(tree: untpd.TypeTree, pt: Type)(implicit ctx: Context): TypeTree = promote(tree) + override def typedRefinedTypeTree(tree: untpd.RefinedTypeTree)(implicit ctx: Context): TypTree = + promote(TypeTree(tree.tpe).withSpan(tree.span)) + override def typedFunPart(fn: untpd.Tree, pt: Type)(implicit ctx: Context): Tree = typedExpr(fn, pt) diff --git a/compiler/src/dotty/tools/dotc/typer/Typer.scala b/compiler/src/dotty/tools/dotc/typer/Typer.scala index effe488555ab..6af21f06d0fa 100644 --- a/compiler/src/dotty/tools/dotc/typer/Typer.scala +++ b/compiler/src/dotty/tools/dotc/typer/Typer.scala @@ -1273,7 +1273,7 @@ class Typer extends Namer assignType(cpy.SingletonTypeTree(tree)(ref1), ref1) } - def typedRefinedTypeTree(tree: untpd.RefinedTypeTree)(implicit ctx: Context): RefinedTypeTree = track("typedRefinedTypeTree") { + def typedRefinedTypeTree(tree: untpd.RefinedTypeTree)(implicit ctx: Context): TypTree = track("typedRefinedTypeTree") { val tpt1 = if (tree.tpt.isEmpty) TypeTree(defn.ObjectType) else typedAheadType(tree.tpt) val refineClsDef = desugar.refinedTypeToClass(tpt1, tree.refinements).withSpan(tree.span) val refineCls = createSymbol(refineClsDef).asClass diff --git a/tests/pos/i6213.scala b/tests/pos/i6213.scala new file mode 100644 index 000000000000..6feda0ef6cf9 --- /dev/null +++ b/tests/pos/i6213.scala @@ -0,0 +1,6 @@ +object Test { + class C { type T } + inline def foo[U] <: Any = (??? : C { type T = U }) + + foo[Int] +} \ No newline at end of file