File tree Expand file tree Collapse file tree 4 files changed +35
-6
lines changed
lib/src/services/correction/dart
test/src/services/correction/fix
analyzer/lib/src/dart/element Expand file tree Collapse file tree 4 files changed +35
-6
lines changed Original file line number Diff line number Diff line change 55import 'package:analysis_server/src/services/correction/fix.dart' ;
66import 'package:analysis_server_plugin/edit/dart/correction_producer.dart' ;
77import 'package:analyzer/dart/ast/ast.dart' ;
8+ import 'package:analyzer/dart/element/nullability_suffix.dart' ;
89import 'package:analyzer/src/dart/ast/extensions.dart' ;
910import 'package:analyzer_plugin/utilities/change_builder/change_builder_core.dart' ;
1011import 'package:analyzer_plugin/utilities/fixes/fixes.dart' ;
@@ -47,8 +48,8 @@ class MakeReturnTypeNullable extends ResolvedCorrectionProducer {
4748
4849 if (node is ! NullLiteral &&
4950 ! typeSystem.isAssignableTo (
50- returnType.typeOrThrow ,
51- typeSystem. promoteToNonNull (type ),
51+ type ,
52+ returnType.typeOrThrow. withNullability ( NullabilitySuffix .question ),
5253 strictCasts: analysisOptions.strictCasts,
5354 )) {
5455 return ;
Original file line number Diff line number Diff line change @@ -32,8 +32,6 @@ class ReplaceReturnType extends ResolvedCorrectionProducer {
3232 Future <void > compute (ChangeBuilder builder) async {
3333 var node = this .node;
3434 if (node is Expression ) {
35- var typeSystem = libraryElement2.typeSystem;
36-
3735 var newType = node.staticType;
3836
3937 void updateNewType (SyntacticEntity entity) {
Original file line number Diff line number Diff line change 44
55import 'package:analysis_server/src/services/correction/fix.dart' ;
66import 'package:analyzer_plugin/utilities/fixes/fixes.dart' ;
7+ import 'package:analyzer_testing/utilities/utilities.dart' ;
78import 'package:test_reflective_loader/test_reflective_loader.dart' ;
89
910import 'fix_processor.dart' ;
@@ -146,6 +147,21 @@ class B extends A {
146147 await assertNoFix ();
147148 }
148149
150+ Future <void > test_nullable_type () async {
151+ await resolveTestCode ('''
152+ int? f(String v) => v;
153+ ''' );
154+ await assertNoFix ();
155+ }
156+
157+ Future <void > test_nullable_type_dynamic () async {
158+ writeAnalysisOptionsFile (analysisOptionsContent (strictCasts: true ));
159+ await resolveTestCode ('''
160+ int? f(dynamic v) => v;
161+ ''' );
162+ await assertNoFix ();
163+ }
164+
149165 Future <void > test_returnTypeHasTypeArguments () async {
150166 await resolveTestCode ('''
151167List<String> f() {
@@ -158,4 +174,12 @@ List<String>? f() {
158174}
159175''' );
160176 }
177+
178+ Future <void > test_unrelated_types () async {
179+ writeAnalysisOptionsFile (analysisOptionsContent (strictCasts: true ));
180+ await resolveTestCode ('''
181+ int f(dynamic v) => v;
182+ ''' );
183+ await assertNoFix ();
184+ }
161185}
Original file line number Diff line number Diff line change @@ -713,7 +713,10 @@ class TypeSystemImpl implements TypeSystem {
713713 required covariant InterfaceElementImpl element,
714714 required NullabilitySuffix nullabilitySuffix,
715715 }) {
716- return instantiateInterfaceToBounds (element: element, nullabilitySuffix: nullabilitySuffix);
716+ return instantiateInterfaceToBounds (
717+ element: element,
718+ nullabilitySuffix: nullabilitySuffix,
719+ );
717720 }
718721
719722 /// Given a [DartType] [type] and a list of types
@@ -753,7 +756,10 @@ class TypeSystemImpl implements TypeSystem {
753756 required covariant TypeAliasElementImpl element,
754757 required NullabilitySuffix nullabilitySuffix,
755758 }) {
756- return instantiateTypeAliasToBounds (element: element, nullabilitySuffix: nullabilitySuffix);
759+ return instantiateTypeAliasToBounds (
760+ element: element,
761+ nullabilitySuffix: nullabilitySuffix,
762+ );
757763 }
758764
759765 /// Given uninstantiated [typeFormals] , instantiate them to their bounds.
You can’t perform that action at this time.
0 commit comments