summaryrefslogtreecommitdiff
path: root/javalanglib/src/main/scala/java/lang/StackTraceElement.scala
diff options
context:
space:
mode:
Diffstat (limited to 'javalanglib/src/main/scala/java/lang/StackTraceElement.scala')
-rw-r--r--javalanglib/src/main/scala/java/lang/StackTraceElement.scala55
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
+ }
+}