File tree 5 files changed +119
-0
lines changed
compiler/src/dotty/tools/dotc/core/quoted 5 files changed +119
-0
lines changed Original file line number Diff line number Diff line change @@ -171,6 +171,8 @@ object PickledQuotes {
171
171
else if (clazz == classOf [Float ]) defn.FloatType
172
172
else if (clazz == classOf [Double ]) defn.DoubleType
173
173
else defn.UnitType
174
+ } else if (clazz.isArray) {
175
+ defn.ArrayType .appliedTo(classToType(clazz.getComponentType))
174
176
} else if (clazz.isMemberClass) {
175
177
val name = clazz.getSimpleName.toTypeName
176
178
val enclosing = classToType(clazz.getEnclosingClass)
Original file line number Diff line number Diff line change
1
+
2
+ classOf[Object].getCanonicalName()
3
+ java.lang.Object
4
+
5
+ classOf[Array[Object]].getCanonicalName()
6
+ java.lang.Object[]
7
+
8
+ classOf[Array[Object]].getCanonicalName()
9
+ java.lang.Object[]
10
+
11
+ classOf[Array[Object]].getCanonicalName()
12
+ java.lang.Object[]
13
+
14
+ classOf[Array[Object]].getCanonicalName()
15
+ java.lang.Object[]
16
+
17
+ classOf[Array[Foo]].getCanonicalName()
18
+ Foo[]
19
+
20
+ classOf[Array[Array[Foo]]].getCanonicalName()
21
+ Foo[][]
Original file line number Diff line number Diff line change
1
+
2
+ import scala .quoted ._
3
+ import dotty .tools .dotc .quoted .Toolbox ._
4
+
5
+ object Test {
6
+
7
+ def main (args : Array [String ]): Unit = {
8
+
9
+ def test [T ](clazz : java.lang.Class [T ]): Unit = {
10
+ val lclazz = clazz.toExpr
11
+ val name = ' { (~ clazz.toExpr).getCanonicalName }
12
+ println()
13
+ println(name.show)
14
+ println(name.run)
15
+ }
16
+
17
+ // class Object
18
+ test(classOf [Array [_]])
19
+
20
+ // class Array[Object]
21
+ test(classOf [Array [Any ]])
22
+ test(classOf [Array [AnyVal ]])
23
+ test(classOf [Array [AnyRef ]])
24
+ test(classOf [Array [Object ]])
25
+
26
+ // class Array[Foo]
27
+ test(classOf [Array [Foo ]])
28
+
29
+ // class Array[Array[Foo]]
30
+ test(classOf [Array [Array [Foo ]]])
31
+ }
32
+
33
+ }
34
+
35
+ class Foo
Original file line number Diff line number Diff line change
1
+
2
+ classOf[Array[Boolean]].getCanonicalName()
3
+ boolean[]
4
+
5
+ classOf[Array[Byte]].getCanonicalName()
6
+ byte[]
7
+
8
+ classOf[Array[Char]].getCanonicalName()
9
+ char[]
10
+
11
+ classOf[Array[Short]].getCanonicalName()
12
+ short[]
13
+
14
+ classOf[Array[Int]].getCanonicalName()
15
+ int[]
16
+
17
+ classOf[Array[Long]].getCanonicalName()
18
+ long[]
19
+
20
+ classOf[Array[Float]].getCanonicalName()
21
+ float[]
22
+
23
+ classOf[Array[Double]].getCanonicalName()
24
+ double[]
25
+
26
+ classOf[Array[Array[Int]]].getCanonicalName()
27
+ int[][]
28
+
29
+ classOf[Array[Array[Array[Int]]]].getCanonicalName()
30
+ int[][][]
Original file line number Diff line number Diff line change
1
+
2
+ import scala .quoted ._
3
+ import dotty .tools .dotc .quoted .Toolbox ._
4
+
5
+ object Test {
6
+
7
+ def main (args : Array [String ]): Unit = {
8
+
9
+ def test [T ](clazz : java.lang.Class [T ]): Unit = {
10
+ val lclazz = clazz.toExpr
11
+ val name = ' { (~ clazz.toExpr).getCanonicalName }
12
+ println()
13
+ println(name.show)
14
+ println(name.run)
15
+ }
16
+
17
+ // primitive arrays
18
+ test(classOf [Array [Boolean ]])
19
+ test(classOf [Array [Byte ]])
20
+ test(classOf [Array [Char ]])
21
+ test(classOf [Array [Short ]])
22
+ test(classOf [Array [Int ]])
23
+ test(classOf [Array [Long ]])
24
+ test(classOf [Array [Float ]])
25
+ test(classOf [Array [Double ]])
26
+
27
+ test(classOf [Array [Array [Int ]]])
28
+ test(classOf [Array [Array [Array [Int ]]]])
29
+ }
30
+
31
+ }
You can’t perform that action at this time.
0 commit comments