Skip to content

Commit 3e2567a

Browse files
scheglovCommit Queue
authored andcommitted
CQ. De-duplicate analysis of annotations in DeprecatedMemberUseFromSamePackage.
Change-Id: I6a3e1dcfb4dd61f794bf36bf2e87c42e4c1b279d Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/398940 Commit-Queue: Konstantin Shcheglov <[email protected]> Reviewed-by: Brian Wilkerson <[email protected]> Reviewed-by: Phil Quitslund <[email protected]>
1 parent 1af4de2 commit 3e2567a

File tree

1 file changed

+59
-102
lines changed

1 file changed

+59
-102
lines changed

pkg/linter/lib/src/rules/deprecated_member_use_from_same_package.dart

Lines changed: 59 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -107,26 +107,16 @@ class _RecursiveVisitor extends RecursiveAstVisitor<void> {
107107

108108
@override
109109
void visitClassDeclaration(ClassDeclaration node) {
110-
_deprecatedVerifier.pushInDeprecatedValue(
111-
node.declaredFragment?.element.metadata2.hasDeprecated ?? false);
112-
113-
try {
110+
_withDeprecatedDeclaration(node, () {
114111
super.visitClassDeclaration(node);
115-
} finally {
116-
_deprecatedVerifier.popInDeprecated();
117-
}
112+
});
118113
}
119114

120115
@override
121116
void visitClassTypeAlias(ClassTypeAlias node) {
122-
_deprecatedVerifier.pushInDeprecatedValue(
123-
node.declaredFragment?.element.metadata2.hasDeprecated ?? false);
124-
125-
try {
117+
_withDeprecatedDeclaration(node, () {
126118
super.visitClassTypeAlias(node);
127-
} finally {
128-
_deprecatedVerifier.popInDeprecated();
129-
}
119+
});
130120
}
131121

132122
@override
@@ -142,14 +132,9 @@ class _RecursiveVisitor extends RecursiveAstVisitor<void> {
142132

143133
@override
144134
void visitConstructorDeclaration(ConstructorDeclaration node) {
145-
_deprecatedVerifier.pushInDeprecatedValue(
146-
node.declaredFragment?.element.metadata2.hasDeprecated ?? false);
147-
148-
try {
135+
_withDeprecatedDeclaration(node, () {
149136
super.visitConstructorDeclaration(node);
150-
} finally {
151-
_deprecatedVerifier.popInDeprecated();
152-
}
137+
});
153138
}
154139

155140
@override
@@ -160,26 +145,16 @@ class _RecursiveVisitor extends RecursiveAstVisitor<void> {
160145

161146
@override
162147
void visitDefaultFormalParameter(DefaultFormalParameter node) {
163-
_deprecatedVerifier.pushInDeprecatedValue(
164-
node.declaredFragment?.element.metadata2.hasDeprecated ?? false);
165-
166-
try {
148+
_withDeprecatedFormalParameter(node, () {
167149
super.visitDefaultFormalParameter(node);
168-
} finally {
169-
_deprecatedVerifier.popInDeprecated();
170-
}
150+
});
171151
}
172152

173153
@override
174154
void visitEnumDeclaration(EnumDeclaration node) {
175-
_deprecatedVerifier.pushInDeprecatedValue(
176-
node.declaredFragment?.element.metadata2.hasDeprecated ?? false);
177-
178-
try {
155+
_withDeprecatedDeclaration(node, () {
179156
super.visitEnumDeclaration(node);
180-
} finally {
181-
_deprecatedVerifier.popInDeprecated();
182-
}
157+
});
183158
}
184159

185160
@override
@@ -190,14 +165,9 @@ class _RecursiveVisitor extends RecursiveAstVisitor<void> {
190165

191166
@override
192167
void visitExtensionDeclaration(ExtensionDeclaration node) {
193-
_deprecatedVerifier.pushInDeprecatedValue(
194-
node.declaredFragment?.element.metadata2.hasDeprecated ?? false);
195-
196-
try {
168+
_withDeprecatedDeclaration(node, () {
197169
super.visitExtensionDeclaration(node);
198-
} finally {
199-
_deprecatedVerifier.popInDeprecated();
200-
}
170+
});
201171
}
202172

203173
@override
@@ -208,14 +178,9 @@ class _RecursiveVisitor extends RecursiveAstVisitor<void> {
208178

209179
@override
210180
void visitExtensionTypeDeclaration(ExtensionTypeDeclaration node) {
211-
_deprecatedVerifier.pushInDeprecatedValue(
212-
node.declaredFragment?.element.metadata2.hasDeprecated ?? false);
213-
214-
try {
181+
_withDeprecatedDeclaration(node, () {
215182
super.visitExtensionTypeDeclaration(node);
216-
} finally {
217-
_deprecatedVerifier.popInDeprecated();
218-
}
183+
});
219184
}
220185

221186
@override
@@ -231,26 +196,16 @@ class _RecursiveVisitor extends RecursiveAstVisitor<void> {
231196

232197
@override
233198
void visitFieldFormalParameter(FieldFormalParameter node) {
234-
_deprecatedVerifier.pushInDeprecatedValue(
235-
node.declaredFragment?.element.metadata2.hasDeprecated ?? false);
236-
237-
try {
199+
_withDeprecatedFormalParameter(node, () {
238200
super.visitFieldFormalParameter(node);
239-
} finally {
240-
_deprecatedVerifier.popInDeprecated();
241-
}
201+
});
242202
}
243203

244204
@override
245205
void visitFunctionDeclaration(FunctionDeclaration node) {
246-
_deprecatedVerifier.pushInDeprecatedValue(
247-
node.declaredFragment?.element.metadata2.hasDeprecated ?? false);
248-
249-
try {
206+
_withDeprecatedDeclaration(node, () {
250207
super.visitFunctionDeclaration(node);
251-
} finally {
252-
_deprecatedVerifier.popInDeprecated();
253-
}
208+
});
254209
}
255210

256211
@override
@@ -261,30 +216,16 @@ class _RecursiveVisitor extends RecursiveAstVisitor<void> {
261216

262217
@override
263218
void visitFunctionTypeAlias(FunctionTypeAlias node) {
264-
_deprecatedVerifier.pushInDeprecatedValue(
265-
node.declaredFragment?.element.metadata2.hasDeprecated ?? false);
266-
267-
try {
219+
_withDeprecatedDeclaration(node, () {
268220
super.visitFunctionTypeAlias(node);
269-
} finally {
270-
_deprecatedVerifier.popInDeprecated();
271-
}
221+
});
272222
}
273223

274224
@override
275225
void visitGenericTypeAlias(GenericTypeAlias node) {
276-
var element = node.declaredFragment?.element;
277-
var hasDeprecated = (element is Annotatable)
278-
? (element! as Annotatable).metadata2.hasDeprecated
279-
: false;
280-
281-
_deprecatedVerifier.pushInDeprecatedValue(hasDeprecated);
282-
283-
try {
226+
_withDeprecatedDeclaration(node, () {
284227
super.visitGenericTypeAlias(node);
285-
} finally {
286-
_deprecatedVerifier.popInDeprecated();
287-
}
228+
});
288229
}
289230

290231
@override
@@ -307,14 +248,9 @@ class _RecursiveVisitor extends RecursiveAstVisitor<void> {
307248

308249
@override
309250
void visitMethodDeclaration(MethodDeclaration node) {
310-
_deprecatedVerifier.pushInDeprecatedValue(
311-
node.declaredFragment?.element.metadata2.hasDeprecated ?? false);
312-
313-
try {
251+
_withDeprecatedDeclaration(node, () {
314252
super.visitMethodDeclaration(node);
315-
} finally {
316-
_deprecatedVerifier.popInDeprecated();
317-
}
253+
});
318254
}
319255

320256
@override
@@ -325,14 +261,9 @@ class _RecursiveVisitor extends RecursiveAstVisitor<void> {
325261

326262
@override
327263
void visitMixinDeclaration(MixinDeclaration node) {
328-
_deprecatedVerifier.pushInDeprecatedValue(
329-
node.declaredFragment?.element.metadata2.hasDeprecated ?? false);
330-
331-
try {
264+
_withDeprecatedDeclaration(node, () {
332265
super.visitMixinDeclaration(node);
333-
} finally {
334-
_deprecatedVerifier.popInDeprecated();
335-
}
266+
});
336267
}
337268

338269
@override
@@ -362,14 +293,9 @@ class _RecursiveVisitor extends RecursiveAstVisitor<void> {
362293

363294
@override
364295
void visitSimpleFormalParameter(SimpleFormalParameter node) {
365-
_deprecatedVerifier.pushInDeprecatedValue(
366-
node.declaredFragment?.element.metadata2.hasDeprecated ?? false);
367-
368-
try {
296+
_withDeprecatedFormalParameter(node, () {
369297
super.visitSimpleFormalParameter(node);
370-
} finally {
371-
_deprecatedVerifier.popInDeprecated();
372-
}
298+
});
373299
}
374300

375301
@override
@@ -394,6 +320,37 @@ class _RecursiveVisitor extends RecursiveAstVisitor<void> {
394320
_deprecatedVerifier.popInDeprecated();
395321
}
396322
}
323+
324+
void _withDeprecatedDeclaration<T extends Declaration>(
325+
T node,
326+
void Function() recurse,
327+
) {
328+
_withDeprecatedFragment(node.declaredFragment, recurse);
329+
}
330+
331+
void _withDeprecatedFormalParameter<T extends FormalParameter>(
332+
T node,
333+
void Function() recurse,
334+
) {
335+
_withDeprecatedFragment(node.declaredFragment, recurse);
336+
}
337+
338+
void _withDeprecatedFragment(
339+
Fragment? fragment,
340+
void Function() recurse,
341+
) {
342+
var isDeprecated = false;
343+
if (fragment?.element case Annotatable annotatable) {
344+
isDeprecated = annotatable.metadata2.hasDeprecated;
345+
}
346+
347+
_deprecatedVerifier.pushInDeprecatedValue(isDeprecated);
348+
try {
349+
recurse();
350+
} finally {
351+
_deprecatedVerifier.popInDeprecated();
352+
}
353+
}
397354
}
398355

399356
/// This [SimpleAstVisitor] visits the [CompilationUnit], and forwards the

0 commit comments

Comments
 (0)