|
1 | 1 | import scala.quoted.*
|
2 | 2 |
|
3 |
| -inline def test1: String = ${ testExpr1 } |
4 |
| -def testExpr1(using Quotes): Expr[String] = |
5 |
| - '{ def f(x: Int) = 1; val n = 2; f(n) } match |
6 |
| - case '{ def g(y: Int) = 1; val n = 2; $a(g, n): Int } => Expr(a.show) |
| 3 | +inline def testExpr(inline body: Any) = ${ testExprImpl('body) } |
| 4 | +def testExprImpl(body: Expr[Any])(using Quotes): Expr[String] = |
| 5 | + body match |
| 6 | + case '{ def g(y: Int) = "hello" * y; $a(g): String } => |
| 7 | + '{ $a((z:Int) => "this is " + z.toString()) } |
7 | 8 | case _ => Expr("not matched")
|
8 | 9 |
|
9 |
| -inline def test2: String = ${ testExpr2 } |
10 |
| -def testExpr2(using Quotes): Expr[String] = |
11 |
| - '{ def f(x: Int, y:Int) = 1; f(1, 2) } match |
12 |
| - case '{ def g(y: Int, z:Int) = 1; $a(g): Int } => Expr(a.show) |
13 |
| - case _ => Expr("not matched") |
| 10 | +// TODO issue-17105: Clean this up if not neccessary |
| 11 | +// inline def test1: String = ${ testExpr1 } |
| 12 | +// def testExpr1(using Quotes): Expr[String] = |
| 13 | +// '{ def f(x: Int) = 1; val n = 2; f(n) } match |
| 14 | +// case '{ def g(y: Int) = 1; val n = 2; $a(g, n): Int } => Expr(a.show) |
| 15 | +// case _ => Expr("not matched") |
14 | 16 |
|
15 |
| -inline def test3: String = ${ testExpr3 } |
16 |
| -def testExpr3(using Quotes): Expr[String] = |
17 |
| - '{ |
18 |
| - def f1(using Ordered[Int]) = |
19 |
| - def f2(using Ordered[Int]) = |
20 |
| - 1 < 2 |
21 |
| - f2 || 2 < 3: Boolean |
22 |
| - } match |
23 |
| - case '{ |
24 |
| - def g1(using ord: Ordered[Int]) = |
25 |
| - def g2(using Ordered[Int]) = |
26 |
| - 1 < 2 |
27 |
| - $a(g2, ord): Boolean |
28 |
| - } => Expr(a.show) |
29 |
| - case _ => Expr("not matched") |
| 17 | +// inline def test2: String = ${ testExpr2 } |
| 18 | +// def testExpr2(using Quotes): Expr[String] = |
| 19 | +// '{ def f(x: Int, y:Int) = 1; f(1, 2) } match |
| 20 | +// case '{ def g(y: Int, z:Int) = 1; $a(g): Int } => Expr(a.show) |
| 21 | +// case _ => Expr("not matched") |
30 | 22 |
|
| 23 | +// inline def test3: String = ${ testExpr3 } |
| 24 | +// def testExpr3(using Quotes): Expr[String] = |
| 25 | +// '{ |
| 26 | +// def f1(using Ordered[Int]) = |
| 27 | +// def f2(using Ordered[Int]) = |
| 28 | +// 1 < 2 |
| 29 | +// f2 || 2 < 3: Boolean |
| 30 | +// } match |
| 31 | +// case '{ |
| 32 | +// def g1(using ord: Ordered[Int]) = |
| 33 | +// def g2(using Ordered[Int]) = |
| 34 | +// 1 < 2 |
| 35 | +// $a(g2, ord): Boolean |
| 36 | +// } => Expr(a.show) |
| 37 | +// case _ => Expr("not matched") |
0 commit comments