@@ -5,6 +5,7 @@ import scala.annotation.internal.sharable
55import scala .annotation .{Annotation , compileTimeOnly }
66
77import dotty .tools .dotc
8+ import dotty .tools .dotc .ast .tpd
89import dotty .tools .dotc .core .Contexts ._
910import dotty .tools .dotc .core .StdNames .nme
1011
@@ -99,6 +100,7 @@ import dotty.tools.dotc.core.StdNames.nme
99100 * ```
100101 */
101102object Matcher {
103+ import tpd .*
102104
103105 class QuoteMatcher [QCtx <: Quotes & Singleton ](val qctx : QCtx )(using Context ) {
104106
@@ -117,7 +119,7 @@ object Matcher {
117119 * ```
118120 * when matching `a * a` with `x * x` the environment will contain `Map(a -> x)`.
119121 */
120- private type Env = Map [Symbol , Symbol ]
122+ private type Env = Map [dotc.core. Symbols . Symbol , dotc.core. Symbols . Symbol ]
121123
122124 inline private def withEnv [T ](env : Env )(inline body : Env ?=> T ): T = body(using env)
123125
@@ -202,7 +204,7 @@ object Matcher {
202204 new TreeMap {
203205 override def transformTerm (tree : Term )(owner : Symbol ): Term =
204206 tree match
205- case tree : Ident => summon[Env ].get(tree.symbol) .flatMap(argsMap.get).getOrElse(tree)
207+ case tree : Ident => summon[Env ].get(tree.symbol. asInstanceOf ). asInstanceOf [ Option [ Symbol ]] .flatMap(argsMap.get).getOrElse(tree)
206208 case tree => super .transformTerm(tree)(owner)
207209 }.transformTree(scrutinee)(Symbol .spliceOwner)
208210 }
@@ -256,7 +258,7 @@ object Matcher {
256258 case (Block (stat1 :: stats1, expr1), Block (stat2 :: stats2, expr2)) =>
257259 val newEnv = (stat1, stat2) match {
258260 case (stat1 : Definition , stat2 : Definition ) =>
259- summon[Env ] + (stat1.symbol -> stat2.symbol)
261+ summon[Env ] + (stat1.symbol. asInstanceOf [dotc.core. Symbols . Symbol ] -> stat2.symbol. asInstanceOf [dotc.core. Symbols . Symbol ] )
260262 case _ =>
261263 summon[Env ]
262264 }
@@ -299,20 +301,20 @@ object Matcher {
299301
300302 /* Match val */
301303 case (ValDef (_, tpt1, rhs1), ValDef (_, tpt2, rhs2)) if checkValFlags() =>
302- def rhsEnv = summon[Env ] + (scrutinee.symbol -> pattern.symbol)
304+ def rhsEnv = summon[Env ] + (scrutinee.symbol. asInstanceOf [dotc.core. Symbols . Symbol ] -> pattern.symbol. asInstanceOf [dotc.core. Symbols . Symbol ] )
303305 tpt1 =?= tpt2 &&& treeOptMatches(rhs1, rhs2)(using rhsEnv)
304306
305307 /* Match def */
306308 case (DefDef (_, paramss1, tpt1, Some (rhs1)), DefDef (_, paramss2, tpt2, Some (rhs2))) =>
307- def rhsEnv =
308- val paramSyms : List [(Symbol , Symbol )] =
309+ def rhsEnv : Env =
310+ val paramSyms : List [(dotc.core. Symbols . Symbol , dotc.core. Symbols . Symbol )] =
309311 for
310312 (clause1, clause2) <- paramss1.zip(paramss2)
311313 (param1, param2) <- clause1.params.zip(clause2.params)
312314 yield
313- param1.symbol -> param2.symbol
315+ param1.symbol. asInstanceOf [dotc.core. Symbols . Symbol ] -> param2.symbol. asInstanceOf [dotc.core. Symbols . Symbol ]
314316 val oldEnv : Env = summon[Env ]
315- val newEnv : List [(Symbol , Symbol )] = (scrutinee.symbol -> pattern.symbol) :: paramSyms
317+ val newEnv : List [(dotc.core. Symbols . Symbol , dotc.core. Symbols . Symbol )] = (scrutinee.symbol. asInstanceOf [dotc.core. Symbols . Symbol ] -> pattern.symbol. asInstanceOf [dotc.core. Symbols . Symbol ] ) :: paramSyms
316318 oldEnv ++ newEnv
317319
318320 matchLists(paramss1, paramss2)(_ =?= _)
0 commit comments