summaryrefslogtreecommitdiff
path: root/javalanglib/src/main/scala/java/lang/StackTraceElement.scala
diff options
context:
space:
mode:
authorHaoyi Li <haoyi@haoyi-mbp.corp.dropbox.com>2014-11-26 00:45:31 -0800
committerHaoyi Li <haoyi@haoyi-mbp.corp.dropbox.com>2014-11-26 00:45:31 -0800
commit2c4b142503bd2d871e6818b5cab8c38627d9e4a0 (patch)
tree6ba33d2980a1a7a1286100202a695c6631bd240e /javalanglib/src/main/scala/java/lang/StackTraceElement.scala
downloadhands-on-scala-js-2c4b142503bd2d871e6818b5cab8c38627d9e4a0.tar.gz
hands-on-scala-js-2c4b142503bd2d871e6818b5cab8c38627d9e4a0.tar.bz2
hands-on-scala-js-2c4b142503bd2d871e6818b5cab8c38627d9e4a0.zip
Squashed 'examples/scala-js/' content from commit 47311ba
git-subtree-dir: examples/scala-js git-subtree-split: 47311ba693f949f204f27ea9475bb63425fbd4f3
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
+ }
+}