@@ -11,6 +11,7 @@ import dotty.tools.dotc.core.Contexts.*
1111import dotty .tools .dotc .core .Decorators .*
1212import dotty .tools .dotc .core .NameKinds
1313import dotty .tools .dotc .core .NameOps .*
14+ import dotty .tools .dotc .core .Scopes .*
1415import dotty .tools .dotc .core .StdNames .*
1516import dotty .tools .dotc .core .Types
1617import dotty .tools .dotc .NoCompilationUnit
@@ -2579,7 +2580,7 @@ class QuotesImpl private (using val ctx: Context) extends Quotes, QuoteUnpickler
25792580 modFlags | dotc.core.Flags .ModuleValCreationFlags ,
25802581 clsFlags | dotc.core.Flags .ModuleClassCreationFlags ,
25812582 parents,
2582- dotc.core. Scopes . newScope,
2583+ newScope,
25832584 privateWithin)
25842585 val cls = mod.moduleClass.asClass
25852586 cls.enter(dotc.core.Symbols .newConstructor(cls, dotc.core.Flags .Synthetic , Nil , Nil ))
@@ -2592,7 +2593,9 @@ class QuotesImpl private (using val ctx: Context) extends Quotes, QuoteUnpickler
25922593 xCheckMacroAssert(! privateWithin.exists || privateWithin.isType, " privateWithin must be a type symbol or `Symbol.noSymbol`" )
25932594 val privateWithin1 = if privateWithin.isTerm then Symbol .noSymbol else privateWithin
25942595 checkValidFlags(flags.toTermFlags, Flags .validMethodFlags)
2595- dotc.core.Symbols .newSymbol(owner, name.toTermName, flags | dotc.core.Flags .Method , tpe, privateWithin1)
2596+ val method = dotc.core.Symbols .newSymbol(owner, name.toTermName, flags | dotc.core.Flags .Method , tpe, privateWithin1)
2597+ method.setParamss(method.paramSymss)
2598+ method
25962599 def newVal (owner : Symbol , name : String , tpe : TypeRepr , flags : Flags , privateWithin : Symbol ): Symbol =
25972600 xCheckMacroAssert(! privateWithin.exists || privateWithin.isType, " privateWithin must be a type symbol or `Symbol.noSymbol`" )
25982601 val privateWithin1 = if privateWithin.isTerm then Symbol .noSymbol else privateWithin
@@ -2807,7 +2810,11 @@ class QuotesImpl private (using val ctx: Context) extends Quotes, QuoteUnpickler
28072810
28082811 def asQuotes : Nested =
28092812 assert(self.ownersIterator.contains(ctx.owner), s " $self is not owned by ${ctx.owner}" )
2810- new QuotesImpl (using ctx.withOwner(self))
2813+ val newCtx = if ctx.owner eq self then ctx else
2814+ val newCtx = ctx.fresh.setOwner(self)
2815+ if ! self.flags.is(Flags .Method ) then newCtx
2816+ else newCtx.setScope(newScopeWith(self.paramSymss.flatten* ))
2817+ new QuotesImpl (using newCtx)
28112818
28122819 end extension
28132820
0 commit comments