From edbdc7d7bca5737714e14477f5a44a594c812b38 Mon Sep 17 00:00:00 2001 From: Mark Harrah Date: Wed, 21 Oct 2009 19:06:33 -0400 Subject: [PATCH] Better error message for when val initialization errors occur (properties, tasks,...) --- src/main/scala/sbt/ReflectUtilities.scala | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/scala/sbt/ReflectUtilities.scala b/src/main/scala/sbt/ReflectUtilities.scala index e48ae6b0f..60d6fb2ab 100644 --- a/src/main/scala/sbt/ReflectUtilities.scala +++ b/src/main/scala/sbt/ReflectUtilities.scala @@ -44,7 +44,7 @@ object ReflectUtilities for(field <- correspondingFields.get(method.getName) if field.getType == method.getReturnType) { val value = method.invoke(self).asInstanceOf[T] - assume(value != null, "val " + method.getName + " was null") + if(value == null) throw new UninitializedVal(method.getName, method.getDeclaringClass.getName) mappings(method.getName) = value } } @@ -54,3 +54,4 @@ object ReflectUtilities def allVals[T](self: AnyRef)(implicit mt: scala.reflect.Manifest[T]): Map[String, T] = allValsC(self, mt.erasure).asInstanceOf[Map[String,T]] } +final class UninitializedVal(val valName: String, val className: String) extends RuntimeException("val " + valName + " in class " + className + " was null.\nThis is probably an initialization problem and a 'lazy val' should be used.") \ No newline at end of file