Skip to content

Commit 98d3b4e

Browse files
authored
Merge pull request scala-js#3217 from sjrd/scala-agnostic-j-l-class
Make java.lang.Class agnostic of Scala
2 parents 36b3515 + 4354594 commit 98d3b4e

File tree

12 files changed

+147
-883
lines changed

12 files changed

+147
-883
lines changed

javalanglib/src/main/scala/java/lang/Class.scala

+5-26
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,17 @@ private trait ScalaJSClassData[A] extends js.Object {
1111
val isRawJSType: scala.Boolean = js.native
1212

1313
def isInstance(obj: Object): scala.Boolean = js.native
14-
def getFakeInstance(): Object = js.native
14+
def isAssignableFrom(that: ScalaJSClassData[_]): scala.Boolean = js.native
1515

1616
def getSuperclass(): Class[_ >: A] = js.native
1717
def getComponentType(): Class[_] = js.native
1818

1919
def newArrayOfThisClass(dimensions: js.Array[Int]): AnyRef = js.native
2020
}
2121

22-
final class Class[A] private (data: ScalaJSClassData[A]) extends Object {
22+
final class Class[A] private (data0: Object) extends Object {
23+
private val data: ScalaJSClassData[A] =
24+
data0.asInstanceOf[ScalaJSClassData[A]]
2325

2426
override def toString(): String = {
2527
(if (isInterface()) "interface " else
@@ -30,30 +32,7 @@ final class Class[A] private (data: ScalaJSClassData[A]) extends Object {
3032
data.isInstance(obj)
3133

3234
def isAssignableFrom(that: Class[_]): scala.Boolean =
33-
if (this.isPrimitive || that.isPrimitive) {
34-
/* This differs from the JVM specification to mimic the behavior of
35-
* runtime type tests of primitive numeric types.
36-
*/
37-
(this eq that) || {
38-
if (this eq classOf[scala.Short])
39-
(that eq classOf[scala.Byte])
40-
else if (this eq classOf[scala.Int])
41-
(that eq classOf[scala.Byte]) || (that eq classOf[scala.Short])
42-
else if (this eq classOf[scala.Float])
43-
(that eq classOf[scala.Byte]) || (that eq classOf[scala.Short]) ||
44-
(that eq classOf[scala.Int])
45-
else if (this eq classOf[scala.Double])
46-
(that eq classOf[scala.Byte]) || (that eq classOf[scala.Short]) ||
47-
(that eq classOf[scala.Int]) || (that eq classOf[scala.Float])
48-
else
49-
false
50-
}
51-
} else {
52-
this.isInstance(that.getFakeInstance())
53-
}
54-
55-
private def getFakeInstance(): Object =
56-
data.getFakeInstance()
35+
this.data.isAssignableFrom(that.data)
5736

5837
def isInterface(): scala.Boolean =
5938
data.isInterface

scalalib/overrides-2.11.11/scala/reflect/ClassTag.scala

-163
This file was deleted.

scalalib/overrides-2.11.2/scala/reflect/ClassTag.scala

-163
This file was deleted.

0 commit comments

Comments
 (0)