Skip to content

Commit a51af1a

Browse files
bishaboshajchyb
authored andcommitted
add tests from sbt/zinc#1316
1 parent 15a2a6c commit a51af1a

File tree

29 files changed

+290
-0
lines changed

29 files changed

+290
-0
lines changed
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
package A
2+
class A
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package app
2+
3+
import Macros.*
4+
import A.A
5+
6+
object App {
7+
@main def hasFields(expected: Boolean): Unit = {
8+
val actual = Macros.hasAnyField[A]
9+
assert(expected == actual, s"Expected $expected, obtained $actual")
10+
}
11+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
// {
2+
// "projects": [
3+
// {
4+
// "name": "app",
5+
// "dependsOn": [
6+
// "macros",
7+
// "A"
8+
// ],
9+
// "scalaVersion": "2.13.12"
10+
// },
11+
// {
12+
// "name": "macros",
13+
// "scalaVersion": "2.13.12"
14+
// },
15+
// {
16+
// "name": "A",
17+
// "scalaVersion": "2.13.12"
18+
// }
19+
// ]
20+
// }
21+
22+
lazy val app = project.in(file("app"))
23+
.dependsOn(macros, A)
24+
25+
lazy val macros = project.in(file("macros"))
26+
27+
lazy val A = project.in(file("A"))
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package A
2+
class A {
3+
val hello: String = ""
4+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package Macros
2+
3+
import scala.quoted.*
4+
5+
object Macros {
6+
inline def hasAnyField[T]: Boolean = ${ hasAnyFieldImpl[T] }
7+
8+
def hasAnyFieldImpl[T: Type](using Quotes): Expr[Boolean] = {
9+
import quotes.reflect.*
10+
11+
val hasField = TypeRepr.of[T].typeSymbol.declaredFields.nonEmpty
12+
13+
Expr(hasField)
14+
}
15+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import sbt._
2+
import Keys._
3+
4+
object DottyInjectedPlugin extends AutoPlugin {
5+
override def requires = plugins.JvmPlugin
6+
override def trigger = allRequirements
7+
8+
override val projectSettings = Seq(
9+
scalaVersion := sys.props("plugin.scalaVersion")
10+
)
11+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# adapted from https://github.com/sbt/zinc/blob/1e422e5525c698aa71cc35b30c275c8c1c3135b2/zinc/src/sbt-test/macros/macro-type-change-2/test
2+
> app/run false
3+
$ copy-file changes/A1.scala A/A.scala
4+
> app/run true
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
package A
2+
class A
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
package A
2+
class B extends A
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package app
2+
3+
import Macros.*
4+
import A.B
5+
6+
object App {
7+
@main def hasFields(expected: Boolean): Unit = {
8+
val actual = Macros.hasAnyField[B]
9+
assert(expected == actual, s"Expected $expected, obtained $actual")
10+
}
11+
}

0 commit comments

Comments
 (0)