diff --git a/compiler/src/dotty/tools/dotc/ast/tpd.scala b/compiler/src/dotty/tools/dotc/ast/tpd.scala index 2e87194ff207..18d7231ec508 100644 --- a/compiler/src/dotty/tools/dotc/ast/tpd.scala +++ b/compiler/src/dotty/tools/dotc/ast/tpd.scala @@ -1397,7 +1397,7 @@ object tpd extends Trees.Instance[Type] with TypedTreeInfo { def desugarIdent(tree: Ident)(using Context): RefTree = { val qual = desugarIdentPrefix(tree) if (qual.isEmpty) tree - else qual.select(tree.symbol) + else atPhase(Phases.typerPhase)(qual.select(tree.symbol)) } /** Recover identifier prefix (e.g. this) if it exists */ diff --git a/compiler/test-resources/repl/i10044a b/compiler/test-resources/repl/i10044a new file mode 100644 index 000000000000..f9bafff2fa85 --- /dev/null +++ b/compiler/test-resources/repl/i10044a @@ -0,0 +1,10 @@ +scala> object opaques { opaque type IArr[+T] = Array[_ <: T]; given arrayOps: AnyRef with { extension [T](arr: IArr[T]) { def reverse: IArr[T] = genericArrayOps(arr).reverse ; def sorted(using math.Ordering[T]): IArr[T] = genericArrayOps(arr).sorted }}}; type IArr[+T] = opaques.IArr[T] ; object IArr { inline def apply(inline x: Int, inline xs: Int*): IArr[Int] = Array(x, xs: _*).asInstanceOf } +// defined object opaques +// defined alias type IArr[+T] = opaques.IArr[T] +// defined object IArr + +scala> IArr(1,2,3).reverse.sorted +val res0: opaques.IArr[Int] = Array(1, 2, 3) + +scala> IArr(1,2,3).reverse.sorted +val res1: opaques.IArr[Int] = Array(1, 2, 3) diff --git a/compiler/test-resources/repl/i10044b b/compiler/test-resources/repl/i10044b new file mode 100644 index 000000000000..e9d1e84f28c1 --- /dev/null +++ b/compiler/test-resources/repl/i10044b @@ -0,0 +1,12 @@ +scala> object Foo { opaque type Bar = Int ; object Bar { extension (b: Bar) def flip: Bar = -b ; def apply(x: Int): Bar = x } } +// defined object Foo +scala> val a = Foo.Bar(42) +val a: Foo.Bar = 42 +scala> val b0 = a.flip +val b0: Foo.Bar = -42 +scala> val b1 = a.flip +val b1: Foo.Bar = -42 +scala> val c = b1.flip +val c: Foo.Bar = 42 +scala> val d = c.flip +val d: Foo.Bar = -42