summaryrefslogtreecommitdiff
path: root/src/library/scala/sys
diff options
context:
space:
mode:
authorSom Snytt <som.snytt@gmail.com>2015-06-17 13:10:48 -0700
committerSom Snytt <som.snytt@gmail.com>2015-06-18 20:22:41 -0700
commit1a9ffaa895e37c141561783c8596810c26d69d6a (patch)
treeb159992ddf1c9ce574f4733cf79741eecd76c33e /src/library/scala/sys
parent305dd96c08041e9fa096cd56dfc4de80284e6fba (diff)
downloadscala-1a9ffaa895e37c141561783c8596810c26d69d6a.tar.gz
scala-1a9ffaa895e37c141561783c8596810c26d69d6a.tar.bz2
scala-1a9ffaa895e37c141561783c8596810c26d69d6a.zip
SI-9206 BooleanProp if set and not untrue
Previously, handy `sys.BooleanProp.keyExists` ignored the property value. While trying not to make any real estate puns, this commit will let it go false if a value is supplied that is not true in the usual Java sense. But what is truth? Allows `scala -Dscala.color=off`, for example.
Diffstat (limited to 'src/library/scala/sys')
-rw-r--r--src/library/scala/sys/BooleanProp.scala7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/library/scala/sys/BooleanProp.scala b/src/library/scala/sys/BooleanProp.scala
index 74b0a9077b..e5e4668edb 100644
--- a/src/library/scala/sys/BooleanProp.scala
+++ b/src/library/scala/sys/BooleanProp.scala
@@ -63,12 +63,13 @@ object BooleanProp {
def valueIsTrue[T](key: String): BooleanProp = new BooleanPropImpl(key, _.toLowerCase == "true")
/** As an alternative, this method creates a BooleanProp which is true
- * if the key exists in the map. This way -Dfoo.bar is enough to be
- * considered true.
+ * if the key exists in the map and is not assigned a value other than "true",
+ * compared case-insensitively, or the empty string. This way -Dmy.property
+ * results in a true-valued property, but -Dmy.property=false does not.
*
* @return A BooleanProp with a liberal truth policy
*/
- def keyExists[T](key: String): BooleanProp = new BooleanPropImpl(key, _ => true)
+ def keyExists[T](key: String): BooleanProp = new BooleanPropImpl(key, s => s == "" || s.equalsIgnoreCase("true"))
/** A constant true or false property which ignores all method calls.
*/