@@ -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