Skip to content

Commit afb8031

Browse files
authored
Merge pull request #11312 from dotty-staging/fix-i11299
Fix #11299: Disallow implicit search on TermRef of Null
2 parents 369a465 + 852ffea commit afb8031

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

compiler/src/dotty/tools/dotc/typer/Implicits.scala

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -779,14 +779,15 @@ trait Implicits:
779779
*/
780780
def inferView(from: Tree, to: Type)(using Context): SearchResult = {
781781
record("inferView")
782+
val wfromtp = from.tpe.widen
782783
if to.isAny
783784
|| to.isAnyRef
784785
|| to.isRef(defn.UnitClass)
785-
|| from.tpe.isRef(defn.NothingClass)
786-
|| from.tpe.isRef(defn.NullClass)
786+
|| wfromtp.isRef(defn.NothingClass)
787+
|| wfromtp.isRef(defn.NullClass)
787788
|| !ctx.mode.is(Mode.ImplicitsEnabled)
788789
|| from.isInstanceOf[Super]
789-
|| (from.tpe eq NoPrefix)
790+
|| (wfromtp eq NoPrefix)
790791
then NoMatchingImplicitsFailure
791792
else {
792793
def adjust(to: Type) = to.stripTypeVar.widenExpr match {

tests/neg/i11299.scala

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
val myNull: Null = null
2+
3+
val n1: Int = null // error
4+
val n2: Int = myNull // error
5+
6+
val b1: Boolean = null // error
7+
val b2: Boolean = myNull // error
8+
9+
val v1: AnyVal = null // error
10+
val v2: AnyVal = myNull // error

0 commit comments

Comments
 (0)