| // Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file | |
| // for details. All rights reserved. Use of this source code is governed by a | |
| // BSD-style license that can be found in the LICENSE file. | |
| import 'package:analyzer/src/diagnostic/diagnostic.dart' as diag; | |
| import 'package:test_reflective_loader/test_reflective_loader.dart'; | |
| import '../rule_test_support.dart'; | |
| void main() { | |
| defineReflectiveSuite(() { | |
| defineReflectiveTests(AvoidEmptyElseTest); | |
| }); | |
| } | |
| @reflectiveTest | |
| class AvoidEmptyElseTest extends LintRuleTest { | |
| @override | |
| String get lintRule => LintNames.avoid_empty_else; | |
| test_else_emptyStatement_hasElseIf() async { | |
| await assertDiagnosticsFromMarkup(r''' | |
| void f() { | |
| var x = 0; | |
| var y = 1; | |
| if (x > y) | |
| print(''); | |
| else if (x < y) | |
| print(''); | |
| else [!;!] | |
| print(''); | |
| } | |
| '''); | |
| } | |
| test_else_emptyStatement_noElseIf() async { | |
| await assertDiagnosticsFromMarkup(r''' | |
| void f() { | |
| var x = 0; | |
| var y = 1; | |
| if (x > y) | |
| print(''); | |
| else [!;!] | |
| print(''); | |
| } | |
| '''); | |
| } | |
| test_else_noEmptyStatement_enclosed() async { | |
| await assertNoDiagnostics(r''' | |
| void f() { | |
| var x = 0; | |
| var y = 1; | |
| if (x > y) { | |
| print(''); | |
| } else { | |
| print(''); | |
| } | |
| } | |
| '''); | |
| } | |
| test_else_noEmptyStatement_notEnclosed() async { | |
| await assertNoDiagnostics(r''' | |
| void f() { | |
| var x = 0; | |
| var y = 1; | |
| if (x > y) | |
| print(''); | |
| else | |
| print(''); | |
| } | |
| '''); | |
| } | |
| test_else_noStatement_notEnclosed() async { | |
| await assertDiagnostics( | |
| r''' | |
| void f() { | |
| var x = 0; | |
| var y = 1; | |
| if (x > y) | |
| print(''); | |
| else | |
| } | |
| ''', | |
| [ | |
| // No lint | |
| error(diag.expectedToken, 67, 4), | |
| error(diag.missingIdentifier, 72, 1), | |
| ], | |
| ); | |
| } | |
| } |