blob: 7e67fd6786b735515ed87db0c652f113a0fd8a40 [file] [log] [blame]
// 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/error/codes.g.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
import '../dart/resolution/context_collection_resolution.dart';
main() {
defineReflectiveSuite(() {
defineReflectiveTests(UnnecessarySetLiteralTest);
});
}
@reflectiveTest
class UnnecessarySetLiteralTest extends PubPackageResolutionTest {
test_blockFunctionBody() async {
await assertNoErrorsInCode(r'''
void g(void Function() fun) {}
void f() {
g(() {1;});
}
''');
}
test_expressionFunctionBody_dynamic() async {
await assertNoErrorsInCode(r'''
void g(Function() fun) {}
void f() {
g(() => {1});
}
''');
}
test_expressionFunctionBody_future() async {
await assertNoErrorsInCode(r'''
void g(Future Function() fun) {}
void f() {
g(() async => {1});
}
''');
}
test_expressionFunctionBody_future_object() async {
await assertNoErrorsInCode(r'''
void g(Future<Object> Function() fun) {}
void f() {
g(() async => {1});
}
''');
}
test_expressionFunctionBody_future_void() async {
await assertErrorsInCode(r'''
void g(Future<void> Function() fun) {}
void f() {
g(() async => {1});
}
''', [
error(WarningCode.UNNECESSARY_SET_LITERAL, 67, 3),
]);
}
test_expressionFunctionBody_futureOr() async {
await assertNoErrorsInCode(r'''
import 'dart:async';
void g(FutureOr Function() fun) {}
void f() {
g(() async => {1});
}
''');
}
test_expressionFunctionBody_futureOr_object() async {
await assertNoErrorsInCode(r'''
import 'dart:async';
void g(FutureOr<Object> Function() fun) {}
void f() {
g(() async => {1});
}
''');
}
test_expressionFunctionBody_futureOr_void() async {
await assertErrorsInCode(r'''
import 'dart:async';
void g(FutureOr<void> Function() fun) {}
void f() {
g(() async => {1});
}
''', [
error(WarningCode.UNNECESSARY_SET_LITERAL, 91, 3),
]);
}
test_expressionFunctionBody_map() async {
await assertNoErrorsInCode(r'''
void g(void Function() fun) {}
void f() {
g(() => {1: 2});
}
''');
}
test_expressionFunctionBody_multipleElements() async {
await assertErrorsInCode(r'''
void g(void Function() fun) {}
void f() {
g(() => {1, 2});
}
''', [
error(WarningCode.UNNECESSARY_SET_LITERAL, 53, 6),
]);
}
test_expressionFunctionBody_multipleElements_statements() async {
await assertErrorsInCode(r'''
void g(void Function() fun) {}
void f(bool b) {
g(() => {1, if (b) 2 else 3, 4, for (;;) 5},);
}
''', [
error(WarningCode.UNNECESSARY_SET_LITERAL, 59, 35),
]);
}
test_expressionFunctionBody_object() async {
await assertNoErrorsInCode(r'''
void g(Object Function() fun) {}
void f() {
g(() => {1});
}
''');
}
test_expressionFunctionBody_statement() async {
await assertErrorsInCode(r'''
void g(void Function(bool) fun) {}
void f() {
g((value) => {if (value) print('')});
}
''', [
error(WarningCode.UNNECESSARY_SET_LITERAL, 62, 22),
]);
}
test_expressionFunctionBody_void() async {
await assertErrorsInCode(r'''
void g(void Function() fun) {}
void f() {
g(() => {1});
}
''', [
error(WarningCode.UNNECESSARY_SET_LITERAL, 53, 3),
]);
}
test_expressionFunctionBody_void_empty() async {
await assertNoErrorsInCode(r'''
void g(void Function() fun) {}
void f() {
g(() => {});
}
''');
}
test_functionDeclaration_dynamic() async {
await assertNoErrorsInCode(r'''
f() => {1};
''');
}
test_functionDeclaration_future() async {
await assertNoErrorsInCode(r'''
Future f() async => {1};
''');
}
test_functionDeclaration_future_object() async {
await assertNoErrorsInCode(r'''
Future<Object> f() async => {1};
''');
}
test_functionDeclaration_future_void() async {
await assertErrorsInCode(r'''
Future<void> f() async => {1};
''', [
error(WarningCode.UNNECESSARY_SET_LITERAL, 26, 3),
]);
}
test_functionDeclaration_futureOr() async {
await assertNoErrorsInCode(r'''
import 'dart:async';
FutureOr f() async => {1};
''');
}
test_functionDeclaration_futureOr_object() async {
await assertNoErrorsInCode(r'''
import 'dart:async';
FutureOr<Object> f() async => {1};
''');
}
test_functionDeclaration_futureOr_void() async {
await assertErrorsInCode(r'''
import 'dart:async';
FutureOr<void> f() async => {1};
''', [
error(WarningCode.UNNECESSARY_SET_LITERAL, 50, 3),
]);
}
test_functionDeclaration_map() async {
await assertNoErrorsInCode(r'''
void f() => {1: 2};
''');
}
test_functionDeclaration_multipleElements() async {
await assertErrorsInCode(r'''
void f() => {1, 2};
''', [
error(WarningCode.UNNECESSARY_SET_LITERAL, 12, 6),
]);
}
test_functionDeclaration_multipleElements_statements() async {
await assertErrorsInCode(r'''
void f(bool b) => {1, if (b) 2 else 3, 4, for (;;) 5};
''', [
error(WarningCode.UNNECESSARY_SET_LITERAL, 18, 35),
]);
}
test_functionDeclaration_object() async {
await assertNoErrorsInCode(r'''
Object f() => {1};
''');
}
test_functionDeclaration_statement() async {
await assertErrorsInCode(r'''
void f(bool value) => {if (value) print('')};
''', [
error(WarningCode.UNNECESSARY_SET_LITERAL, 22, 22),
]);
}
test_functionDeclaration_void() async {
await assertErrorsInCode(r'''
void f() => {1};
''', [
error(WarningCode.UNNECESSARY_SET_LITERAL, 12, 3),
]);
}
}