@@ -30,12 +30,6 @@ object QuotePatterns:
30
30
val typevars = new tpd.TreeAccumulator [Set [Symbol ]] {
31
31
override def apply (typevars : Set [Symbol ], tree : tpd.Tree )(using Context ): Set [Symbol ] = tree match {
32
32
case _ : SplicePattern => typevars
33
- case tree @ DefDef (_, paramss, _, _) =>
34
- val newTypevars = paramss.flatMap{ params => params match
35
- case TypeDefs (tdefs) => tdefs.map(_.symbol)
36
- case _ => List .empty
37
- }.toSet
38
- foldOver(typevars union newTypevars, tree)
39
33
case tdef : TypeDef if tdef.symbol.isClass =>
40
34
val kind = if tdef.symbol.is(Module ) then " objects" else " classes"
41
35
report.error(em " Implementation restriction: cannot match $kind" , tree.srcPos)
@@ -47,7 +41,14 @@ object QuotePatterns:
47
41
tree.srcPos)
48
42
if tree.name.isTermName && ! tree.nameSpan.isSynthetic && tree.name != nme.ANON_FUN && tree.name.startsWith(" $" ) then
49
43
report.error(" Names cannot start with $ quote pattern" , tree.namePos)
50
- foldOver(typevars, tree)
44
+ val typevars1 = tree match
45
+ case tree @ DefDef (_, paramss, _, _) =>
46
+ typevars union paramss.flatMap{ params => params match
47
+ case TypeDefs (tdefs) => tdefs.map(_.symbol)
48
+ case _ => List .empty
49
+ }.toSet
50
+ case _ => typevars
51
+ foldOver(typevars1, tree)
51
52
case _ : Match =>
52
53
report.error(" Implementation restriction: cannot match `match` expressions" , tree.srcPos)
53
54
typevars
0 commit comments