Skip to content

Commit 3c48b64

Browse files
authored
Merge pull request #4310 from dotty-staging/fix-4301
Fix #4301: Show `null` as "null"
2 parents b2476a4 + 6d33ce0 commit 3c48b64

File tree

3 files changed

+19
-4
lines changed

3 files changed

+19
-4
lines changed

compiler/test-resources/repl/i4301

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
scala> List(null)
2+
val res0: List[Null] = List(null)
3+
scala> List[String](null)
4+
val res1: List[String] = List(null)

library/src/dotty/Show.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@ object Show extends LowPrioShow {
1616
* any `T`, we default to `T#toString`.
1717
*/
1818
implicit class ShowValue[V](val v: V) extends AnyVal {
19-
def show(implicit ev: Show[V]): String =
20-
ev.show(v)
19+
def show(implicit ev: Show[V]): String = if (v == null) "null" else ev.show(v)
2120
}
2221

2322
/** Adds escaping backslashes in a string so that it could be put in source code.

library/test/dotty/ShowTests.scala

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ class ShowTests {
5353

5454
@Test def showOptions = {
5555
assertEquals("None", None.show)
56+
val empty = Option.empty
57+
assertEquals("None", empty.show)
5658
assertEquals("None", (None: Option[String]).show)
5759
assertEquals("Some(\"hello opt\")", Some("hello opt").show)
5860
}
@@ -65,8 +67,6 @@ class ShowTests {
6567
@Test def withoutShow = {
6668
case class Car(model: String, manufacturer: String, year: Int)
6769
assertEquals("Car(Mustang,Ford,1967)", Car("Mustang", "Ford", 1967).show)
68-
assertEquals("Map()", Map[Nothing, Nothing]().show)
69-
assertEquals("List()", List().show)
7070
}
7171

7272
@Test def partialShow = {
@@ -79,4 +79,16 @@ class ShowTests {
7979
assertEquals("Array(1)", Array(1).show)
8080
assertEquals("Array(1, 2, 3)", Array(1, 2, 3).show)
8181
}
82+
83+
@Test def showNull = {
84+
assertEquals("null", (null: String).show)
85+
assertEquals("List(null)", List(null).show)
86+
assertEquals("List(null)", List[String](null).show)
87+
}
88+
89+
@Test def showNothing = {
90+
val emptyMap = Map()
91+
assertEquals("Map()", emptyMap.show)
92+
assertEquals("List()", List().show)
93+
}
8294
}

0 commit comments

Comments
 (0)