summaryrefslogtreecommitdiff
path: root/src/library/scala/runtime/Equality.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/library/scala/runtime/Equality.java')
-rw-r--r--src/library/scala/runtime/Equality.java51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/library/scala/runtime/Equality.java b/src/library/scala/runtime/Equality.java
new file mode 100644
index 0000000000..3ec89360b8
--- /dev/null
+++ b/src/library/scala/runtime/Equality.java
@@ -0,0 +1,51 @@
+/* __ *\
+** ________ ___ / / ___ Scala API **
+** / __/ __// _ | / / / _ | (c) 2006-2009, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **
+** /____/\___/_/ |_/____/_/ | | **
+** |/ **
+\* */
+
+// $Id$
+
+
+package scala.runtime;
+
+import java.io.*;
+
+/** An object (static class) encapsulating the variations on equality
+ * presently under consideration. It's written in java so it can easily
+ * be made available to BoxesRunTime as well as scala code.
+ */
+public class Equality
+{
+ public static boolean disallowNullEquals = true;
+ public static boolean disallowPrimitiveEquals = true;
+ public static boolean warnOnEqualsAny = true;
+ public static boolean callCanEqualIfAvailable = true;
+ public static boolean logEverything = false;
+
+ public static String obToString(Object o) {
+ String s = o.toString() + " (" + o.getClass().getSimpleName() + ")";
+ return s.replaceAll("\\n", " ");
+ }
+
+ public static void logInternal(String msg, Object a, Object b, String where) {
+ log(String.format("%s %s == %s at %s", msg, obToString(a), obToString(b), where));
+ }
+
+ public static String whereAreWe() {
+ StackTraceElement[] es = Thread.currentThread().getStackTrace();
+ if (es.length < 4)
+ return "<unknown>";
+
+ StackTraceElement e = es[3];
+ String clazz = e.getClassName().replaceAll("\\$.*$", "\\$...");
+ return String.format("%s.%s(%s.%d)", clazz, e.getMethodName(), e.getFileName(), e.getLineNumber());
+ }
+
+ public static void log(String msg) {
+ if (logEverything)
+ System.out.println(msg);
+ }
+}