Don't suggest UseCurlyBraces for else-if

Change-Id: I2e29565fe67fbe8e412306ef0b8fd3c3188a970b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/296661
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
This commit is contained in:
Konstantin Shcheglov 2023-04-20 19:37:37 +00:00 committed by Commit Queue
parent 0eb13c95ac
commit 9070c7baf1
2 changed files with 53 additions and 4 deletions

View file

@ -109,6 +109,11 @@ class UseCurlyBraces extends CorrectionProducer {
Future<void> _ifStatement(
ChangeBuilder builder, IfStatement node, Statement? thenOrElse) async {
final parent = node.parent;
if (parent is IfStatement && parent.elseStatement == node) {
return;
}
var prefix = utils.getLinePrefix(node.offset);
var indent = prefix + utils.getIndent(1);
@ -127,10 +132,15 @@ class UseCurlyBraces extends CorrectionProducer {
}
var elseStatement = node.elseStatement;
if (elseKeyword != null &&
elseStatement != null &&
elseStatement is! Block &&
(thenOrElse == null || thenOrElse == elseStatement)) {
if (elseKeyword == null || elseStatement == null) {
return;
}
if (elseStatement is Block || elseStatement is IfStatement) {
return;
}
if (thenOrElse == null || thenOrElse == elseStatement) {
_replace(builder, elseKeyword, elseStatement, indent, prefix);
}
});

View file

@ -292,6 +292,32 @@ void f() {
await assertNoAssist();
}
Future<void> test_if_else_if() async {
await resolveTestCode('''
void f(int a) {
if (a == 0) {
print(0);
} /*caret*/else if (a == 1) {
print(1);
}
}
''');
await assertNoAssist();
}
Future<void> test_if_else_ifKeyword() async {
await resolveTestCode('''
void f(int a) {
if (a == 0) {
print(0);
} else /*caret*/if (a == 1) {
print(1);
}
}
''');
await assertNoAssist();
}
Future<void> test_if_else_keyword() async {
await resolveTestCode('''
void f(int a) {
@ -412,6 +438,19 @@ void f(int a) {
''');
}
Future<void> test_if_keyword_withElseIf() async {
await resolveTestCode('''
void f(int a) {
/*caret*/if (a == 0) {
print(0);
} else if (a == 1) {
print(1);
}
}
''');
await assertNoAssist();
}
Future<void> test_if_keyword_withoutElse() async {
await resolveTestCode('''
void f(int a) {