From b23c5e904a926b0f69cdec9742a42a6391faf8de Mon Sep 17 00:00:00 2001 From: Nicolas Stucki Date: Wed, 10 Jun 2020 14:00:52 +0200 Subject: [PATCH] Fix #9150: Dealias reference to singleton --- compiler/src/dotty/tools/dotc/ast/tpd.scala | 2 +- tests/pos/i9150-a.scala | 4 ++++ tests/pos/i9150-b.scala | 7 +++++++ 3 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 tests/pos/i9150-a.scala create mode 100644 tests/pos/i9150-b.scala diff --git a/compiler/src/dotty/tools/dotc/ast/tpd.scala b/compiler/src/dotty/tools/dotc/ast/tpd.scala index 70c4ca500c4e..a720ab45f020 100644 --- a/compiler/src/dotty/tools/dotc/ast/tpd.scala +++ b/compiler/src/dotty/tools/dotc/ast/tpd.scala @@ -421,7 +421,7 @@ object tpd extends Trees.Instance[Type] with TypedTreeInfo { t } - def singleton(tp: Type)(implicit ctx: Context): Tree = tp match { + def singleton(tp: Type)(implicit ctx: Context): Tree = tp.dealias match { case tp: TermRef => ref(tp) case tp: ThisType => This(tp.cls) case tp: SkolemType => singleton(tp.narrow) diff --git a/tests/pos/i9150-a.scala b/tests/pos/i9150-a.scala new file mode 100644 index 000000000000..7ef670eca419 --- /dev/null +++ b/tests/pos/i9150-a.scala @@ -0,0 +1,4 @@ +import scala.compiletime.erasedValue + +inline def fooErased[T] = inline erasedValue[T] match { case _ => } +val f = fooErased[EmptyTuple] diff --git a/tests/pos/i9150-b.scala b/tests/pos/i9150-b.scala new file mode 100644 index 000000000000..8359ba04f579 --- /dev/null +++ b/tests/pos/i9150-b.scala @@ -0,0 +1,7 @@ +import scala.compiletime.erasedValue + +type Foo = Foo.type +object Foo + +inline def fooErased[T] = inline erasedValue[T] match { case _ => } +val f = fooErased[Foo]