Skip to content

Commit 229bd59

Browse files
committed
Check symbol for {DefDef,ValDef,Bind}.apply
1 parent ae32600 commit 229bd59

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

compiler/src/scala/quoted/runtime/impl/QuotesImpl.scala

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,8 @@ class QuotesImpl private (using val ctx: Context) extends Quotes, QuoteUnpickler
266266

267267
object DefDef extends DefDefModule:
268268
def apply(symbol: Symbol, rhsFn: List[List[Tree]] => Option[Term]): DefDef =
269-
assert(symbol.isTerm, s"expected a term symbol but received $symbol")
269+
assert(xCheckMacro && symbol.isTerm, s"expected a term symbol but received $symbol")
270+
assert(xCheckMacro && symbol.flags.is(Flags.Method), "expected a symbol with `Method` flag set")
270271
withDefaultPos(tpd.DefDef(symbol.asTerm, prefss =>
271272
xCheckedMacroOwners(xCheckMacroValidExpr(rhsFn(prefss)), symbol).getOrElse(tpd.EmptyTree)
272273
))
@@ -297,6 +298,7 @@ class QuotesImpl private (using val ctx: Context) extends Quotes, QuoteUnpickler
297298

298299
object ValDef extends ValDefModule:
299300
def apply(symbol: Symbol, rhs: Option[Term]): ValDef =
301+
assert(xCheckMacro && !symbol.flags.is(Flags.Method), "expected a symbol without `Method` flag set")
300302
tpd.ValDef(symbol.asTerm, xCheckedMacroOwners(xCheckMacroValidExpr(rhs), symbol).getOrElse(tpd.EmptyTree))
301303
def copy(original: Tree)(name: String, tpt: TypeTree, rhs: Option[Term]): ValDef =
302304
tpd.cpy.ValDef(original)(name.toTermName, tpt, xCheckedMacroOwners(xCheckMacroValidExpr(rhs), original.symbol).getOrElse(tpd.EmptyTree))
@@ -1473,6 +1475,7 @@ class QuotesImpl private (using val ctx: Context) extends Quotes, QuoteUnpickler
14731475

14741476
object Bind extends BindModule:
14751477
def apply(sym: Symbol, pattern: Tree): Bind =
1478+
assert(xCheckMacro && sym.flags.is(Flags.Case), "expected a symbol with `Case` flag set")
14761479
tpd.Bind(sym, pattern)
14771480
def copy(original: Tree)(name: String, pattern: Tree): Bind =
14781481
withDefaultPos(tpd.cpy.Bind(original)(name.toTermName, pattern))

0 commit comments

Comments
 (0)