Skip to content

Commit 249f231

Browse files
Merge pull request #8674 from dotty-staging/fix-#8671
Fix #8671: Add regression test
2 parents 59f7e65 + f5e5bcd commit 249f231

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed

tests/run-macros/i8671/Macro_1.scala

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import scala.quoted._
2+
3+
case class FileName private(name: String)
4+
5+
object FileName {
6+
def unsafe(s: String) = new FileName(s)
7+
8+
implicit inline def ToFileName(inline s: String): FileName =
9+
${createFileName('{s})}
10+
11+
def fileNameFromString(s: String): Either[String, FileName] =
12+
Right(FileName.unsafe(s))
13+
14+
def createFileName(fileName: Expr[String])(using qctx: QuoteContext): Expr[FileName] =
15+
fileName match {
16+
case e@Const(s) =>
17+
fileNameFromString(s) match {
18+
case Right(fn) =>
19+
'{FileName.unsafe(${Expr(fn.name)})} // Or `Expr(fn)` if there is a `Liftable[FileName]`
20+
case Left(_) =>
21+
qctx.throwError(s"$s is not a valid file name! It must not contain a /", fileName)
22+
}
23+
24+
case _ =>
25+
qctx.throwError(s"$fileName is not a valid file name. It must be a literal string", fileName)
26+
}
27+
}
28+

tests/run-macros/i8671/Test_2.scala

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import FileName._
2+
3+
@main def Test = {
4+
val fileName1: FileName = ToFileName("fileName1")
5+
println(fileName1)
6+
}

0 commit comments

Comments
 (0)