File tree Expand file tree Collapse file tree 2 files changed +11
-1
lines changed Expand file tree Collapse file tree 2 files changed +11
-1
lines changed Original file line number Diff line number Diff line change @@ -45,7 +45,14 @@ object Liftable {
45
45
}
46
46
}
47
47
48
- given [T : Type : Liftable : ClassTag ] as Liftable [IArray [T ]] = new Liftable [IArray [T ]] {
48
+ given ArrayIsLiftable [T : Type : Liftable : ClassTag ] as Liftable [Array [T ]] = new Liftable [Array [T ]] {
49
+ def toExpr (arr : Array [T ]): given QuoteContext => Expr [Array [T ]] = ' {
50
+ val array = new Array [T ]($ {arr.length.toExpr})(ClassTag ($ {the[ClassTag [T ]].runtimeClass.toExpr}))
51
+ $ { Expr .block(List .tabulate(arr.length)(i => ' { array($ {i.toExpr}) = $ {arr(i).toExpr} }), ' { array }) }
52
+ }
53
+ }
54
+
55
+ given IArrayIsLiftable [T : Type : Liftable : ClassTag ] as Liftable [IArray [T ]] = new Liftable [IArray [T ]] {
49
56
def toExpr (iarray : IArray [T ]): given QuoteContext => Expr [IArray [T ]] = ' {
50
57
val array = new Array [T ]($ {iarray.length.toExpr})(ClassTag ($ {the[ClassTag [T ]].runtimeClass.toExpr}))
51
58
$ { Expr .block(List .tabulate(iarray.length)(i => ' { array($ {i.toExpr}) = $ {iarray(i).toExpr} }), ' { array.asInstanceOf [IArray [T ]] }) }
Original file line number Diff line number Diff line change @@ -68,6 +68,9 @@ object Test {
68
68
val iarray : IArray [Int ] = IArray (1 , 2 , 3 )
69
69
val liftedIArray : Expr [IArray [Int ]] = iarray
70
70
71
+ val array : Array [Int ] = Array (1 , 2 , 3 )
72
+ val liftedArray : Expr [Array [Int ]] = array
73
+
71
74
val some : Option [Int ] = Some (2 )
72
75
val none : Option [Int ] = Some (2 )
73
76
val liftedSome : Expr [Option [Int ]] = some
You can’t perform that action at this time.
0 commit comments