Wire up remove question mark and remove non null assert fixes for patterns

Bug:49960
Change-Id: I6b0a94454e0f51c5fd15d4abef16d075dce54a90
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/279334
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Keerti Parthasarathy <keertip@google.com>
This commit is contained in:
Keerti Parthasarathy 2023-01-20 00:30:48 +00:00 committed by Commit Queue
parent 1cdd496a51
commit ae5dc9e2a9
6 changed files with 34 additions and 12 deletions

View file

@ -35,5 +35,13 @@ class RemoveNonNullAssertion extends CorrectionProducer {
builder.addDeletion(range.startStart(bangToken, bangToken.next!));
});
}
if (expression is NullAssertPattern) {
var bangToken = expression.operator;
await builder.addDartFileEdit(file, (builder) {
builder.addDeletion(range.startStart(bangToken, bangToken.next!));
});
}
}
}

View file

@ -42,5 +42,11 @@ class RemoveQuestionMark extends CorrectionProducer {
builder.addDeletion(range.token(questionMark));
});
}
if (targetNode is NullCheckPattern) {
var questionMark = targetNode.operator;
await builder.addDartFileEdit(file, (builder) {
builder.addDeletion(range.token(questionMark));
});
}
}
}

View file

@ -2716,9 +2716,9 @@ StaticWarningCode.MISSING_ENUM_CONSTANT_IN_SWITCH:
StaticWarningCode.UNNECESSARY_NON_NULL_ASSERTION:
status: hasFix
StaticWarningCode.UNNECESSARY_NULL_ASSERT_PATTERN:
status: needsFix
status: hasFix
StaticWarningCode.UNNECESSARY_NULL_CHECK_PATTERN:
status: needsFix
status: hasFix
WarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE_TO_ERROR_HANDLER:
status: noFix
notes: |-

View file

@ -1539,6 +1539,12 @@ class FixProcessor extends BaseProcessor {
StaticWarningCode.UNNECESSARY_NON_NULL_ASSERTION: [
RemoveNonNullAssertion.new,
],
StaticWarningCode.UNNECESSARY_NULL_CHECK_PATTERN: [
RemoveQuestionMark.new,
],
StaticWarningCode.UNNECESSARY_NULL_ASSERT_PATTERN: [
RemoveNonNullAssertion.new,
],
WarningCode.BODY_MIGHT_COMPLETE_NORMALLY_NULLABLE: [
AddReturnNull.new,

View file

@ -49,14 +49,13 @@ void f(String a) {
''');
}
@FailingTest(
reason: "TODO(keertip): Add support for patterns to FixProcessor")
Future<void> test_nonNullableCasePattern() async {
await resolveTestCode('''
void f() {
List<String> row = ['h', 'e', 'l'];
switch (row) {
case ['user', var name!]: break;
case ['user', var name!]:
print(name);
}
}
''');
@ -64,25 +63,28 @@ void f() {
void f() {
List<String> row = ['h', 'e', 'l'];
switch (row) {
case ['user', var name]: break;
case ['user', var name]:
print(name);
}
}
''');
}
@FailingTest(
reason: "TODO(keertip): Add support for patterns to FixProcessor")
Future<void> test_nonNullablePattern() async {
await resolveTestCode('''
void f() {
(int, int?) p = (1, 2);
var (x!, y!) = p;
print(x);
print(y);
}
''');
await assertHasFix('''
void f() {
(int, int?) p = (1, 2);
var (x, y!) = p;
print(x);
print(y);
}
''');
}

View file

@ -47,15 +47,14 @@ class RemoveQuestionMarkTest extends FixProcessorTest {
@override
FixKind get kind => DartFixKind.REMOVE_QUESTION_MARK;
@FailingTest(
reason: "TODO(keertip): Add support for patterns to FixProcessor")
Future<void> test_casePattern() async {
await resolveTestCode('''
void f() {
String? maybeString = 'hello';
switch (maybeString) {
case
var s?: break;
var s?:
print(s);
}
}
''');
@ -64,7 +63,8 @@ void f() {
String? maybeString = 'hello';
switch (maybeString) {
case
var s: break;
var s:
print(s);
}
}
''');