File tree Expand file tree Collapse file tree 5 files changed +119
-0
lines changed
compiler/src/dotty/tools/dotc/core/quoted Expand file tree Collapse file tree 5 files changed +119
-0
lines changed Original file line number Diff line number Diff line change @@ -171,6 +171,8 @@ object PickledQuotes {
171171 else if (clazz == classOf [Float ]) defn.FloatType
172172 else if (clazz == classOf [Double ]) defn.DoubleType
173173 else defn.UnitType
174+ } else if (clazz.isArray) {
175+ defn.ArrayType .appliedTo(classToType(clazz.getComponentType))
174176 } else if (clazz.isMemberClass) {
175177 val name = clazz.getSimpleName.toTypeName
176178 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