diff options
Diffstat (limited to 'javalanglib/src/main/scala/java/lang/StackTraceElement.scala')
-rw-r--r-- | javalanglib/src/main/scala/java/lang/StackTraceElement.scala | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/javalanglib/src/main/scala/java/lang/StackTraceElement.scala b/javalanglib/src/main/scala/java/lang/StackTraceElement.scala new file mode 100644 index 0000000..cc87aec --- /dev/null +++ b/javalanglib/src/main/scala/java/lang/StackTraceElement.scala @@ -0,0 +1,55 @@ +package java.lang + +import scala.scalajs.js + +final class StackTraceElement(declaringClass: String, methodName: String, + fileName: String, lineNumber: Int) extends AnyRef with java.io.Serializable { + + def getFileName(): String = fileName + def getLineNumber(): Int = lineNumber + def getClassName(): String = declaringClass + def getMethodName(): String = methodName + def isNativeMethod(): scala.Boolean = false + + override def equals(that: Any): scala.Boolean = that match { + case that: StackTraceElement => + (getFileName == that.getFileName) && + (getLineNumber == that.getLineNumber) && + (getClassName == that.getClassName) && + (getMethodName == that.getMethodName) + case _ => + false + } + + override def toString(): String = { + var result = "" + if (declaringClass != "<jscode>") + result += declaringClass + "." + result += methodName + if (fileName eq null) { + if (isNativeMethod) + result += "(Native Method)" + else + result += "(Unknown Source)" + } else { + result += s"($fileName" + if (lineNumber >= 0) { + result += s":$lineNumber" + if (columnNumber >= 0) + result += s":$columnNumber" + } + result += ")" + } + result + } + + override def hashCode(): Int = { + declaringClass.hashCode() ^ methodName.hashCode() + } + + private def columnNumber: Int = { + val rawNum = this.asInstanceOf[js.Dynamic].columnNumber + if (!(!rawNum)) rawNum.asInstanceOf[Int] + else -1 + } +} |