mirror of
https://github.com/dart-lang/sdk
synced 2024-09-16 00:39:49 +00:00
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:
parent
1cdd496a51
commit
ae5dc9e2a9
|
@ -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!));
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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));
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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: |-
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
''');
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
''');
|
||||
|
|
Loading…
Reference in a new issue