Skip to content

Instantly share code, notes, and snippets.

@abeln
Created November 12, 2019 22:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save abeln/17f622591da2bdb39575a1081e85f798 to your computer and use it in GitHub Desktop.
Save abeln/17f622591da2bdb39575a1081e85f798 to your computer and use it in GitHub Desktop.
Port scopts to explicit nulls
diff --git a/jvm/src/main/scala/PlatformReadInstances.scala b/jvm/src/main/scala/PlatformReadInstances.scala
index da707c4..73227a7 100644
--- a/jvm/src/main/scala/PlatformReadInstances.scala
+++ b/jvm/src/main/scala/PlatformReadInstances.scala
@@ -12,7 +12,7 @@ private[scopt] object platform {
import java.net.{ InetAddress, URI }
type ParseException = java.text.ParseException
- def mkParseEx(s: String, p: Int) = new java.text.ParseException(s, p)
+ def mkParseEx(s: String | Null, p: Int) = new java.text.ParseException(s, p)
trait PlatformReadInstances {
def calendarRead(pattern: String): Read[Calendar] = calendarRead(pattern, Locale.getDefault)
diff --git a/shared/src/main/scala/scopt/Read.scala b/shared/src/main/scala/scopt/Read.scala
index 186580d..94725d7 100644
--- a/shared/src/main/scala/scopt/Read.scala
+++ b/shared/src/main/scala/scopt/Read.scala
@@ -97,25 +97,25 @@ object Read extends platform.PlatformReadInstances {
// reads("1,2,3,4,5") == Seq(1,2,3,4,5)
implicit def seqRead[A: Read]: Read[CSeq[A]] = reads { (s: String) =>
- s.split(sep).toList.map(implicitly[Read[A]].reads)
+ s.split(sep).toList.map(x => implicitly[Read[A]].reads(x.nn))
}
// reads("1,2,3,4,5") == List(1,2,3,4,5)
implicit def immutableSeqRead[A: Read]: Read[ISeq[A]] = reads { (s: String) =>
- s.split(sep).toList.map(implicitly[Read[A]].reads)
+ s.split(sep).toList.map(x => implicitly[Read[A]].reads(x.nn))
}
// reads("1=false,2=true") == Map(1 -> false, 2 -> true)
implicit def mapRead[K: Read, V: Read]: Read[Map[K, V]] = reads { (s: String) =>
- s.split(sep).map(implicitly[Read[(K, V)]].reads).toMap
+ s.split(sep).map(x => implicitly[Read[(K, V)]].reads(x.nn)).toMap
}
// reads("1=false,1=true") == List((1 -> false), (1 -> true))
implicit def seqTupleRead[K: Read, V: Read]: Read[CSeq[(K, V)]] = reads { (s: String) =>
- s.split(sep).map(implicitly[Read[(K, V)]].reads).toList
+ s.split(sep).map(x => implicitly[Read[(K, V)]].reads(x.nn)).toList
}
// reads("1=false,1=true") == List((1 -> false), (1 -> true))
implicit def immutableSeqTupleRead[K: Read, V: Read]: Read[ISeq[(K, V)]] = reads { (s: String) =>
- s.split(sep).map(implicitly[Read[(K, V)]].reads).toList
+ s.split(sep).map(x => implicitly[Read[(K, V)]].reads(x.nn)).toList
}
implicit def optionRead[A: Read]: Read[Option[A]] = reads {
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment