Skip to content

Commit

Permalink
Analyzer: Move NON_BOOL_* tests to diagnostics/
Browse files Browse the repository at this point in the history
Change-Id: I5bc58d78bf4f15e860759176d2e6abc670666e46
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/153260
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
  • Loading branch information
srawlins authored and commit-bot@chromium.org committed Jul 6, 2020
1 parent 69aba23 commit 42d2996
Show file tree
Hide file tree
Showing 6 changed files with 158 additions and 141 deletions.
131 changes: 0 additions & 131 deletions pkg/analyzer/test/generated/static_type_warning_code_test.dart
Expand Up @@ -502,137 +502,6 @@ f() {
]);
}

test_nonBoolCondition_conditional() async {
await assertErrorsInCode('''
f() { return 3 ? 2 : 1; }
''', [
error(StaticTypeWarningCode.NON_BOOL_CONDITION, 13, 1),
]);
}

test_nonBoolCondition_do() async {
await assertErrorsInCode(r'''
f() {
do {} while (3);
}
''', [
error(StaticTypeWarningCode.NON_BOOL_CONDITION, 21, 1),
]);
}

test_nonBoolCondition_for() async {
// https://github.com/dart-lang/sdk/issues/24713
await assertErrorsInCode(r'''
f() {
for (;3;) {}
}
''', [
error(StaticTypeWarningCode.NON_BOOL_CONDITION, 14, 1),
]);
}

test_nonBoolCondition_if() async {
await assertErrorsInCode(r'''
f() {
if (3) return 2; else return 1;
}
''', [
error(StaticTypeWarningCode.NON_BOOL_CONDITION, 12, 1),
]);
}

test_nonBoolCondition_while() async {
await assertErrorsInCode(r'''
f() {
while (3) {}
}
''', [
error(StaticTypeWarningCode.NON_BOOL_CONDITION, 15, 1),
]);
}

test_nonBoolExpression_functionType_bool() async {
await assertErrorsInCode(r'''
bool makeAssertion() => true;
f() {
assert(makeAssertion);
}
''', [
error(StaticTypeWarningCode.NON_BOOL_EXPRESSION, 45, 13),
]);
}

test_nonBoolExpression_functionType_int() async {
await assertErrorsInCode(r'''
int makeAssertion() => 1;
f() {
assert(makeAssertion);
}
''', [
error(StaticTypeWarningCode.NON_BOOL_EXPRESSION, 41, 13),
]);
}

test_nonBoolExpression_interfaceType() async {
await assertErrorsInCode(r'''
f() {
assert(0);
}
''', [
error(StaticTypeWarningCode.NON_BOOL_EXPRESSION, 15, 1),
]);
}

test_nonBoolNegationExpression() async {
await assertErrorsInCode(r'''
f() {
!42;
}
''', [
error(StaticTypeWarningCode.NON_BOOL_NEGATION_EXPRESSION, 9, 2),
]);
}

test_nonBoolOperand_and_left() async {
await assertErrorsInCode(r'''
bool f(int left, bool right) {
return left && right;
}
''', [
error(StaticTypeWarningCode.NON_BOOL_OPERAND, 40, 4),
]);
}

test_nonBoolOperand_and_right() async {
await assertErrorsInCode(r'''
bool f(bool left, String right) {
return left && right;
}
''', [
error(StaticTypeWarningCode.NON_BOOL_OPERAND, 51, 5),
]);
}

test_nonBoolOperand_or_left() async {
await assertErrorsInCode(r'''
bool f(List<int> left, bool right) {
return left || right;
}
''', [
error(StaticTypeWarningCode.NON_BOOL_OPERAND, 46, 4),
]);
}

test_nonBoolOperand_or_right() async {
await assertErrorsInCode(r'''
bool f(bool left, double right) {
return left || right;
}
''', [
error(StaticTypeWarningCode.NON_BOOL_OPERAND, 51, 5),
]);
}

test_nonTypeAsTypeArgument_notAType() async {
await assertErrorsInCode(r'''
int A;
Expand Down
59 changes: 49 additions & 10 deletions pkg/analyzer/test/src/diagnostics/non_bool_condition_test.dart
Expand Up @@ -13,13 +13,41 @@ import '../dart/resolution/driver_resolution.dart';
main() {
defineReflectiveSuite(() {
defineReflectiveTests(NonBoolConditionTest);
defineReflectiveTests(NonBoolConditionWithConstantsTest);
defineReflectiveTests(NonBoolConditionTest_NNBD);
});
}

@reflectiveTest
class NonBoolConditionTest extends DriverResolutionTest {
test_conditional() async {
await assertErrorsInCode('''
f() { return 3 ? 2 : 1; }
''', [
error(StaticTypeWarningCode.NON_BOOL_CONDITION, 13, 1),
]);
}

test_do() async {
await assertErrorsInCode(r'''
f() {
do {} while (3);
}
''', [
error(StaticTypeWarningCode.NON_BOOL_CONDITION, 21, 1),
]);
}

test_for() async {
// https://github.com/dart-lang/sdk/issues/24713
await assertErrorsInCode(r'''
f() {
for (;3;) {}
}
''', [
error(StaticTypeWarningCode.NON_BOOL_CONDITION, 14, 1),
]);
}

test_forElement() async {
await assertErrorsInCode('''
var v = [for (; 0;) 1];
Expand All @@ -28,13 +56,33 @@ var v = [for (; 0;) 1];
]);
}

test_if() async {
await assertErrorsInCode(r'''
f() {
if (3) return 2; else return 1;
}
''', [
error(StaticTypeWarningCode.NON_BOOL_CONDITION, 12, 1),
]);
}

test_ifElement() async {
await assertErrorsInCode('''
var v = [if (3) 1];
''', [
error(StaticTypeWarningCode.NON_BOOL_CONDITION, 13, 1),
]);
}

test_while() async {
await assertErrorsInCode(r'''
f() {
while (3) {}
}
''', [
error(StaticTypeWarningCode.NON_BOOL_CONDITION, 15, 1),
]);
}
}

@reflectiveTest
Expand Down Expand Up @@ -67,12 +115,3 @@ m() {
]);
}
}

@reflectiveTest
class NonBoolConditionWithConstantsTest extends NonBoolConditionTest {
@override
AnalysisOptionsImpl get analysisOptions => AnalysisOptionsImpl()
..contextFeatures = FeatureSet.fromEnableFlags(
[EnableString.constant_update_2018],
);
}
49 changes: 49 additions & 0 deletions pkg/analyzer/test/src/diagnostics/non_bool_expression_test.dart
@@ -0,0 +1,49 @@
// Copyright (c) 2020, 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/error/codes.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';

import '../dart/resolution/driver_resolution.dart';

main() {
defineReflectiveSuite(() {
defineReflectiveTests(NonBoolExpressionTest);
});
}

@reflectiveTest
class NonBoolExpressionTest extends DriverResolutionTest {
test_functionType_bool() async {
await assertErrorsInCode(r'''
bool makeAssertion() => true;
f() {
assert(makeAssertion);
}
''', [
error(StaticTypeWarningCode.NON_BOOL_EXPRESSION, 45, 13),
]);
}

test_functionType_int() async {
await assertErrorsInCode(r'''
int makeAssertion() => 1;
f() {
assert(makeAssertion);
}
''', [
error(StaticTypeWarningCode.NON_BOOL_EXPRESSION, 41, 13),
]);
}

test_interfaceType() async {
await assertErrorsInCode(r'''
f() {
assert(0);
}
''', [
error(StaticTypeWarningCode.NON_BOOL_EXPRESSION, 15, 1),
]);
}
}
Expand Up @@ -12,10 +12,24 @@ import '../dart/resolution/driver_resolution.dart';

main() {
defineReflectiveSuite(() {
defineReflectiveTests(NonBoolNegationExpressionTest);
defineReflectiveTests(NonBoolNegationExpressionTest_NNBD);
});
}

@reflectiveTest
class NonBoolNegationExpressionTest extends DriverResolutionTest {
test_nonBool() async {
await assertErrorsInCode(r'''
f() {
!42;
}
''', [
error(StaticTypeWarningCode.NON_BOOL_NEGATION_EXPRESSION, 9, 2),
]);
}
}

@reflectiveTest
class NonBoolNegationExpressionTest_NNBD extends DriverResolutionTest {
@override
Expand Down
44 changes: 44 additions & 0 deletions pkg/analyzer/test/src/diagnostics/non_bool_operand_test.dart
Expand Up @@ -12,10 +12,54 @@ import '../dart/resolution/driver_resolution.dart';

main() {
defineReflectiveSuite(() {
defineReflectiveTests(NonBoolOperandTest);
defineReflectiveTests(NonBoolOperandTest_NNBD);
});
}

@reflectiveTest
class NonBoolOperandTest extends DriverResolutionTest {
test_and_left() async {
await assertErrorsInCode(r'''
bool f(int left, bool right) {
return left && right;
}
''', [
error(StaticTypeWarningCode.NON_BOOL_OPERAND, 40, 4),
]);
}

test_and_right() async {
await assertErrorsInCode(r'''
bool f(bool left, String right) {
return left && right;
}
''', [
error(StaticTypeWarningCode.NON_BOOL_OPERAND, 51, 5),
]);
}

test_or_left() async {
await assertErrorsInCode(r'''
bool f(List<int> left, bool right) {
return left || right;
}
''', [
error(StaticTypeWarningCode.NON_BOOL_OPERAND, 46, 4),
]);
}

test_or_right() async {
await assertErrorsInCode(r'''
bool f(bool left, double right) {
return left || right;
}
''', [
error(StaticTypeWarningCode.NON_BOOL_OPERAND, 51, 5),
]);
}
}

@reflectiveTest
class NonBoolOperandTest_NNBD extends DriverResolutionTest {
@override
Expand Down
2 changes: 2 additions & 0 deletions pkg/analyzer/test/src/diagnostics/test_all.dart
Expand Up @@ -321,6 +321,7 @@ import 'no_default_super_constructor_test.dart' as no_default_super_constructor;
import 'non_abstract_class_inherits_abstract_member_test.dart'
as non_abstract_class_inherits_abstract_member;
import 'non_bool_condition_test.dart' as non_bool_condition;
import 'non_bool_expression_test.dart' as non_bool_expression;
import 'non_bool_negation_expression_test.dart' as non_bool_negation_expression;
import 'non_bool_operand_test.dart' as non_bool_operand;
import 'non_constant_case_expression_from_deferred_library_test.dart'
Expand Down Expand Up @@ -750,6 +751,7 @@ main() {
no_default_super_constructor.main();
non_abstract_class_inherits_abstract_member.main();
non_bool_condition.main();
non_bool_expression.main();
non_bool_negation_expression.main();
non_bool_operand.main();
non_constant_list_element.main();
Expand Down

0 comments on commit 42d2996

Please sign in to comment.