| // Copyright (c) 2026, 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:test_reflective_loader/test_reflective_loader.dart'; |
| |
| import '../rule_test_support.dart'; |
| |
| void main() { |
| defineReflectiveSuite(() { |
| defineReflectiveTests(NoDynamicCastsTest); |
| }); |
| } |
| |
| @reflectiveTest |
| class NoDynamicCastsTest extends LintRuleTest { |
| @override |
| String get lintRule => LintNames.no_dynamic_casts; |
| |
| test_argument() async { |
| await assertDiagnosticsFromMarkdown(r''' |
| void f(int x) {} |
| void g(dynamic a) { |
| f([!a!]); |
| } |
| '''); |
| } |
| |
| test_assignment() async { |
| await assertDiagnosticsFromMarkdown(r''' |
| void f(dynamic a) { |
| int x = [!a!]; |
| } |
| '''); |
| } |
| |
| test_assignment_ok() async { |
| await assertNoDiagnostics(r''' |
| void f(dynamic a) { |
| dynamic x = a; |
| Object? y = a; |
| } |
| '''); |
| } |
| |
| test_condition_conditionalExpression() async { |
| await assertDiagnosticsFromMarkdown(r''' |
| void f(dynamic a) { |
| [!a!] ? 1 : 2; |
| } |
| '''); |
| } |
| |
| test_condition_doLoop() async { |
| await assertDiagnosticsFromMarkdown(r''' |
| void f(dynamic a) { |
| do {} while ([!a!]); |
| } |
| '''); |
| } |
| |
| test_condition_forLoop() async { |
| await assertDiagnosticsFromMarkdown(r''' |
| void f(dynamic a) { |
| for (; [!a!];) {} |
| } |
| '''); |
| } |
| |
| test_condition_ifExpression() async { |
| await assertDiagnosticsFromMarkdown(r''' |
| void f(dynamic a) { |
| [if ([!a!]) 7]; |
| } |
| '''); |
| } |
| |
| test_condition_ifStatement() async { |
| await assertDiagnosticsFromMarkdown(r''' |
| void f(dynamic a) { |
| if ([!a!]) {} |
| } |
| '''); |
| } |
| |
| test_condition_whileLoop() async { |
| await assertDiagnosticsFromMarkdown(r''' |
| void f(dynamic a) { |
| while ([!a!]) {} |
| } |
| '''); |
| } |
| |
| test_explicitCast_ok() async { |
| await assertNoDiagnostics(r''' |
| void f(dynamic a) { |
| int x = a as int; |
| } |
| '''); |
| } |
| |
| test_expressionFunctionBody() async { |
| await assertDiagnosticsFromMarkdown(r''' |
| int f(dynamic a) => [!a!]; |
| '''); |
| } |
| |
| test_forEach_iterable() async { |
| await assertDiagnosticsFromMarkdown(r''' |
| void f(dynamic a) { |
| for (var x in [!a!]) {} |
| } |
| '''); |
| } |
| |
| test_forEach_variable() async { |
| await assertDiagnosticsFromMarkdown(r''' |
| void f(List<dynamic> list) { |
| for (int x in [!list!]) {} |
| } |
| '''); |
| } |
| |
| test_forEach_variable_objectQuestionTarget() async { |
| await assertNoDiagnostics(r''' |
| void f(List<dynamic> list) { |
| for (Object? x in list) {} |
| } |
| '''); |
| } |
| |
| test_listLiteral() async { |
| await assertDiagnosticsFromMarkdown(r''' |
| void f(dynamic a) { |
| var list = <int>[[!a!]]; |
| } |
| '''); |
| } |
| |
| test_logicalBinary_left() async { |
| await assertDiagnosticsFromMarkdown(r''' |
| void f(dynamic a, bool b) { |
| [!a!] && b; |
| } |
| '''); |
| } |
| |
| test_logicalBinary_right() async { |
| await assertDiagnosticsFromMarkdown(r''' |
| void f(bool a, dynamic b) { |
| a && [!b!]; |
| } |
| '''); |
| } |
| |
| test_mapLiteral_key() async { |
| await assertDiagnosticsFromMarkdown(r''' |
| void f(dynamic a) { |
| var map = <int, String>{[!a!]: 'x'}; |
| } |
| '''); |
| } |
| |
| test_mapLiteral_spread() async { |
| await assertDiagnosticsFromMarkdown(r''' |
| void f(dynamic a) { |
| var map = <String, int>{...[!a!]}; |
| } |
| '''); |
| } |
| |
| test_mapLiteral_value() async { |
| await assertDiagnosticsFromMarkdown(r''' |
| void f(dynamic a) { |
| var map = <String, int>{'x': [!a!]}; |
| } |
| '''); |
| } |
| |
| test_namedArgument() async { |
| await assertDiagnosticsFromMarkdown(r''' |
| void f({required int x}) {} |
| void g(dynamic a) { |
| f(x: [!a!]); |
| } |
| '''); |
| } |
| |
| test_negation() async { |
| await assertDiagnosticsFromMarkdown(r''' |
| void f(dynamic a) { |
| ![!a!]; |
| } |
| '''); |
| } |
| |
| test_return() async { |
| await assertDiagnosticsFromMarkdown(r''' |
| int f(dynamic a) { |
| return [!a!]; |
| } |
| '''); |
| } |
| |
| test_return_async() async { |
| await assertDiagnosticsFromMarkdown(r''' |
| Future<int> f(dynamic a) async { |
| return [!a!]; |
| } |
| '''); |
| } |
| |
| test_setLiteral() async { |
| await assertDiagnosticsFromMarkdown(r''' |
| void f(dynamic a) { |
| var set = <int>{[!a!]}; |
| } |
| '''); |
| } |
| |
| test_spreadList() async { |
| await assertDiagnosticsFromMarkdown(r''' |
| void f(dynamic a) { |
| var list = <int>[...[!a!]]; |
| } |
| '''); |
| } |
| |
| test_yield() async { |
| await assertDiagnosticsFromMarkdown(r''' |
| Iterable<int> f(dynamic a) sync* { |
| yield [!a!]; |
| } |
| '''); |
| } |
| |
| test_yieldStar() async { |
| await assertDiagnosticsFromMarkdown(r''' |
| Iterable<int> f(dynamic a) sync* { |
| yield* [!a!]; |
| } |
| '''); |
| } |
| } |