diff --git a/compiler/src/dotty/tools/dotc/core/Types.scala b/compiler/src/dotty/tools/dotc/core/Types.scala index 24537ac288cd..d708215147c0 100644 --- a/compiler/src/dotty/tools/dotc/core/Types.scala +++ b/compiler/src/dotty/tools/dotc/core/Types.scala @@ -237,7 +237,7 @@ object Types { } def isBottomType(using Context): Boolean = - if ctx.explicitNulls && !ctx.phase.erasedTypes then hasClassSymbol(defn.NothingClass) + if ctx.mode.is(Mode.SafeNulls) && !ctx.phase.erasedTypes then hasClassSymbol(defn.NothingClass) else isBottomTypeAfterErasure def isBottomTypeAfterErasure(using Context): Boolean = diff --git a/tests/explicit-nulls/unsafe-common/unsafe-select-type-member.scala b/tests/explicit-nulls/unsafe-common/unsafe-select-type-member.scala new file mode 100644 index 000000000000..ddd402545edb --- /dev/null +++ b/tests/explicit-nulls/unsafe-common/unsafe-select-type-member.scala @@ -0,0 +1,7 @@ +import java.util.ArrayList + +def f[T]: ArrayList[T] = { + val cz = Class.forName("java.util.ArrayList") + val o = cz.newInstance() // error: T of Class[?] | Null + o.asInstanceOf[ArrayList[T]] +} \ No newline at end of file