@@ -18,9 +18,6 @@ class CrossVersionChecks extends MiniPhase:
18
18
19
19
override def description : String = CrossVersionChecks .description
20
20
21
- override def runsAfterGroupsOf : Set [String ] = Set (FirstTransform .name)
22
- // We assume all type trees except TypeTree have been eliminated
23
-
24
21
// Note: if a symbol has both @deprecated and @migration annotations and both
25
22
// warnings are enabled, only the first one checked here will be emitted.
26
23
// I assume that's a consequence of some code trying to avoid noise by suppressing
@@ -69,18 +66,8 @@ class CrossVersionChecks extends MiniPhase:
69
66
val since = annot.argumentConstant(1 ).map(" since " + _.stringValue).getOrElse(" " )
70
67
report.deprecationWarning(em " ${sym.showLocated} is deprecated ${since}${msg}" , pos)
71
68
72
- private def checkExperimentalSignature (sym : Symbol , pos : SrcPos )(using Context ): Unit =
73
- class Checker extends TypeTraverser :
74
- def traverse (tp : Type ): Unit =
75
- if tp.typeSymbol.isExperimental then
76
- Feature .checkExperimentalDef(tp.typeSymbol, pos)
77
- else
78
- traverseChildren(tp)
79
- if ! sym.isInExperimentalScope then
80
- new Checker ().traverse(sym.info)
81
-
82
69
private def checkExperimentalAnnots (sym : Symbol )(using Context ): Unit =
83
- if ! sym.isInExperimentalScope then
70
+ if sym.exists && ! sym.isInExperimentalScope then
84
71
for annot <- sym.annotations if annot.symbol.isExperimental do
85
72
Feature .checkExperimentalDef(annot.symbol, annot.tree)
86
73
@@ -119,13 +106,16 @@ class CrossVersionChecks extends MiniPhase:
119
106
override def transformValDef (tree : ValDef )(using Context ): ValDef =
120
107
checkDeprecatedOvers(tree)
121
108
checkExperimentalAnnots(tree.symbol)
122
- checkExperimentalSignature(tree.symbol, tree)
123
109
tree
124
110
125
111
override def transformDefDef (tree : DefDef )(using Context ): DefDef =
126
112
checkDeprecatedOvers(tree)
127
113
checkExperimentalAnnots(tree.symbol)
128
- checkExperimentalSignature(tree.symbol, tree)
114
+ tree
115
+
116
+ override def transformTypeDef (tree : TypeDef )(using Context ): TypeDef =
117
+ // TODO do we need to check checkDeprecatedOvers(tree)?
118
+ checkExperimentalAnnots(tree.symbol)
129
119
tree
130
120
131
121
override def transformIdent (tree : Ident )(using Context ): Ident = {
@@ -157,19 +147,14 @@ class CrossVersionChecks extends MiniPhase:
157
147
tree
158
148
}
159
149
160
- override def transformTypeDef (tree : TypeDef )(using Context ): TypeDef = {
161
- checkExperimentalAnnots(tree.symbol)
150
+ override def transformOther (tree : Tree )(using Context ): Tree =
151
+ tree.foreachSubTree { // Find references in type trees and imports
152
+ case tree : Ident => transformIdent(tree)
153
+ case tree : Select => transformSelect(tree)
154
+ case tree : TypeTree => transformTypeTree(tree)
155
+ case _ =>
156
+ }
162
157
tree
163
- }
164
-
165
- override def transformOther (tree : Tree )(using Context ): Tree = tree match
166
- case tree : Import =>
167
- tree.foreachSubTree {
168
- case t : RefTree => checkUndesiredProperties(t.symbol, t.srcPos)
169
- case _ =>
170
- }
171
- tree
172
- case _ => tree
173
158
174
159
end CrossVersionChecks
175
160
0 commit comments