@@ -244,6 +244,60 @@ main() {}
244244 expect (previewInfo.applyTo (code), 'f({required int x}) => 0;' );
245245 }
246246
247+ Future <void > test_addRequired_afterMetadata () async {
248+ await analyze ('f({@deprecated int x}) => 0;' );
249+ var previewInfo = run ({
250+ findNode.defaultParameter ('int x' ): NodeChangeForDefaultFormalParameter ()
251+ ..addRequiredKeyword = true
252+ });
253+ expect (previewInfo.applyTo (code), 'f({@deprecated required int x}) => 0;' );
254+ }
255+
256+ Future <void > test_addRequired_afterMetadata_andRequiredAnnotation () async {
257+ addMetaPackage ();
258+ var content = '''
259+ import 'package:meta/meta.dart';
260+ f({@required @deprecated int x}) {}
261+ ''' ;
262+ await analyze (content);
263+ var annotation = findNode.annotation ('required' );
264+ var previewInfo = run ({
265+ findNode.defaultParameter ('int x' ): NodeChangeForDefaultFormalParameter ()
266+ ..addRequiredKeyword = true
267+ ..annotationToRemove = annotation
268+ });
269+ expect (previewInfo.applyTo (code), '''
270+ import 'package:meta/meta.dart';
271+ f({@deprecated required int x}) {}
272+ ''' );
273+ expect (previewInfo.values, hasLength (2 ));
274+
275+ expect (previewInfo[content.indexOf ('int ' )], hasLength (1 ));
276+ expect (previewInfo[content.indexOf ('int ' )].single.isInsertion, true );
277+ expect (previewInfo[content.indexOf ('@required' )], isNotNull);
278+ expect (previewInfo[content.indexOf ('@required' )].single.isDeletion, true );
279+ }
280+
281+ Future <void > test_addRequired_afterMetadata_beforeFinal () async {
282+ await analyze ('f({@deprecated final int x}) => 0;' );
283+ var previewInfo = run ({
284+ findNode.defaultParameter ('int x' ): NodeChangeForDefaultFormalParameter ()
285+ ..addRequiredKeyword = true
286+ });
287+ expect (previewInfo.applyTo (code),
288+ 'f({@deprecated required final int x}) => 0;' );
289+ }
290+
291+ Future <void > test_addRequired_afterMetadata_beforeFunctionTyped () async {
292+ await analyze ('f({@deprecated int x()}) => 0;' );
293+ var previewInfo = run ({
294+ findNode.defaultParameter ('int x' ): NodeChangeForDefaultFormalParameter ()
295+ ..addRequiredKeyword = true
296+ });
297+ expect (
298+ previewInfo.applyTo (code), 'f({@deprecated required int x()}) => 0;' );
299+ }
300+
247301 Future <void > test_addShownName_atEnd_multiple () async {
248302 await analyze ("import 'dart:math' show cos;" );
249303 var previewInfo = run ({
@@ -1728,6 +1782,24 @@ int f() => null;
17281782 expect (previewInfo.applyTo (code), 'f(x) => x.y;' );
17291783 }
17301784
1785+ Future <void >
1786+ test_requiredAnnotationToRequiredKeyword_leadingAnnotations () async {
1787+ addMetaPackage ();
1788+ await analyze ('''
1789+ import 'package:meta/meta.dart';
1790+ f({@deprecated @required int x}) {}
1791+ ''' );
1792+ var annotation = findNode.annotation ('required' );
1793+ var previewInfo = run ({
1794+ annotation: NodeChangeForAnnotation ()..changeToRequiredKeyword = true
1795+ });
1796+ expect (previewInfo.applyTo (code), '''
1797+ import 'package:meta/meta.dart';
1798+ f({@deprecated required int x}) {}
1799+ ''' );
1800+ expect (previewInfo.values.single.single.isDeletion, true );
1801+ }
1802+
17311803 Future <void > test_requiredAnnotationToRequiredKeyword_prefixed () async {
17321804 addMetaPackage ();
17331805 await analyze ('''
0 commit comments