| // Copyright (c) 2022, 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(AvoidAnnotatingWithDynamicTest); |
| }); |
| } |
| |
| @reflectiveTest |
| class AvoidAnnotatingWithDynamicTest extends LintRuleTest { |
| @override |
| String get lintRule => LintNames.avoid_annotating_with_dynamic; |
| |
| test_augmentationClass() async { |
| var a = newFile('$testPackageLibPath/a.dart', r''' |
| part 'test.dart'; |
| |
| class A { } |
| '''); |
| |
| await assertDiagnosticsFromMarkup(r''' |
| part of 'a.dart'; |
| |
| augment class A { |
| void f([!dynamic o!]) { } |
| } |
| '''); |
| await assertNoDiagnosticsInFile(a.path); |
| } |
| |
| test_augmentationTopLevelFunction() async { |
| var a = newFile('$testPackageLibPath/a.dart', r''' |
| part 'test.dart'; |
| '''); |
| |
| await assertDiagnosticsFromMarkup(r''' |
| part of 'a.dart'; |
| |
| void f([!dynamic o!]) { } |
| '''); |
| await assertNoDiagnosticsInFile(a.path); |
| } |
| |
| test_augmentationTopLevelFunction_localDynamic() async { |
| var a = newFile('$testPackageLibPath/a.dart', r''' |
| part 'test.dart'; |
| |
| void f(int i); |
| '''); |
| |
| await assertDiagnosticsFromMarkup(r''' |
| part of 'a.dart'; |
| |
| augment void f(int i) { |
| var g = ([!dynamic x!]) {}; |
| g(i); |
| } |
| '''); |
| await assertNoDiagnosticsInFile(a.path); |
| } |
| |
| test_augmentedMethod() async { |
| var b = newFile('$testPackageLibPath/b.dart', r''' |
| part of 'test.dart'; |
| |
| augment class A { |
| augment void f(dynamic o); |
| } |
| '''); |
| |
| await assertDiagnosticsFromMarkup(r''' |
| part 'b.dart'; |
| |
| class A { |
| void f([!dynamic o!]) { } |
| } |
| '''); |
| await assertNoDiagnosticsInFile(b.path); |
| } |
| |
| test_augmentedTopLevelFunction() async { |
| var b = newFile('$testPackageLibPath/b.dart', r''' |
| part of 'test.dart'; |
| |
| augment void f(dynamic o); |
| '''); |
| |
| await assertDiagnosticsFromMarkup(r''' |
| part 'b.dart'; |
| |
| void f([!dynamic o!]) { } |
| '''); |
| await assertNoDiagnosticsInFile(b.path); |
| } |
| |
| test_augmentedTopLevelFunction_multiple() async { |
| var b = newFile('$testPackageLibPath/b.dart', r''' |
| part of 'test.dart'; |
| |
| augment void f(dynamic o); |
| augment void f(dynamic o); |
| '''); |
| |
| await assertDiagnosticsFromMarkup(r''' |
| part 'b.dart'; |
| |
| void f([!dynamic o!]) { } |
| '''); |
| await assertNoDiagnosticsInFile(b.path); |
| } |
| |
| test_fieldFormals() async { |
| await assertDiagnosticsFromMarkup(r''' |
| class A { |
| var a; |
| A([!dynamic this.a!]); |
| } |
| '''); |
| } |
| |
| test_functionTypedParameter() async { |
| await assertDiagnosticsFromMarkup(r''' |
| void f(void g([!dynamic x!])) {} |
| '''); |
| } |
| |
| test_genericTypedef() async { |
| await assertDiagnosticsFromMarkup(r''' |
| typedef F = void Function([!dynamic x!]); |
| '''); |
| } |
| |
| test_implicitDynamic() async { |
| await assertNoDiagnostics(r''' |
| void f(p) {} |
| '''); |
| } |
| |
| test_optionalNamedParameter() async { |
| await assertDiagnosticsFromMarkup(r''' |
| void f({[!dynamic p!]}) {} |
| '''); |
| } |
| |
| test_optionalParameter() async { |
| await assertDiagnosticsFromMarkup(r''' |
| void f([[!dynamic p!]]) {} |
| '''); |
| } |
| |
| test_parameter_defaultValue() async { |
| await assertDiagnosticsFromMarkup(r''' |
| void f([[!dynamic x = 1!]]) {} |
| '''); |
| } |
| |
| test_primaryConstructor_declaringParameter() async { |
| await assertDiagnosticsFromMarkup(r''' |
| class C([!final dynamic a!]); |
| '''); |
| } |
| |
| test_primaryConstructor_fieldFormalParameter() async { |
| await assertDiagnosticsFromMarkup(r''' |
| class C([!dynamic this.a!]) { |
| var a; |
| } |
| '''); |
| } |
| |
| test_primaryConstructor_simpleParameter() async { |
| await assertDiagnosticsFromMarkup(r''' |
| class C([!dynamic a!]); |
| '''); |
| } |
| |
| test_primaryConstructor_superParameter() async { |
| await assertDiagnosticsFromMarkup(r''' |
| class A(this.a, this.b) { |
| var a; |
| var b; |
| } |
| class B(/*[0*/dynamic super.a/*0]*/, /*[1*/dynamic super.b/*1]*/) extends A; |
| '''); |
| } |
| |
| test_requiredParameter() async { |
| await assertDiagnosticsFromMarkup(r''' |
| void f([!dynamic p!]) {} |
| '''); |
| } |
| |
| test_returnType() async { |
| await assertNoDiagnostics(r''' |
| dynamic f() { |
| return null; |
| } |
| '''); |
| } |
| |
| test_super() async { |
| await assertDiagnosticsFromMarkup(r''' |
| class A { |
| var a; |
| var b; |
| A(this.a, this.b); |
| } |
| class B extends A { |
| B(/*[0*/dynamic super.a/*0]*/, /*[1*/dynamic super.b/*1]*/); |
| } |
| '''); |
| } |
| |
| test_typedef() async { |
| await assertDiagnosticsFromMarkup(r''' |
| typedef void F([!dynamic x!]); |
| '''); |
| } |
| } |