| Index: packages/analyzer/test/generated/static_warning_code_test.dart
|
| diff --git a/packages/analyzer/test/generated/static_warning_code_test.dart b/packages/analyzer/test/generated/static_warning_code_test.dart
|
| index 3d63d3caa8f1d8e9fd68e2565250af0db87d1856..3acd138ace4abc5c03a476161297823a384a7f12 100644
|
| --- a/packages/analyzer/test/generated/static_warning_code_test.dart
|
| +++ b/packages/analyzer/test/generated/static_warning_code_test.dart
|
| @@ -2,23 +2,40 @@
|
| // 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.
|
|
|
| -library engine.static_warning_code_test;
|
| +library analyzer.test.generated.static_warning_code_test;
|
|
|
| -import 'package:analyzer/src/generated/error.dart';
|
| +import 'package:analyzer/error/error.dart';
|
| +import 'package:analyzer/src/error/codes.dart';
|
| +import 'package:analyzer/src/generated/engine.dart';
|
| import 'package:analyzer/src/generated/source_io.dart';
|
| +import 'package:test_reflective_loader/test_reflective_loader.dart';
|
| import 'package:unittest/unittest.dart';
|
|
|
| -import '../reflective_tests.dart';
|
| import '../utils.dart';
|
| -import 'resolver_test.dart';
|
| +import 'resolver_test_case.dart';
|
|
|
| main() {
|
| initializeTestEnvironment();
|
| - runReflectiveTests(StaticWarningCodeTest);
|
| + defineReflectiveTests(StaticWarningCodeTest);
|
| }
|
|
|
| @reflectiveTest
|
| class StaticWarningCodeTest extends ResolverTestCase {
|
| + void fail_argumentTypeNotAssignable_tearOff_required() {
|
| + Source source = addSource(r'''
|
| +class C {
|
| + Object/*=T*/ f/*<T>*/(Object/*=T*/ x) => x;
|
| +}
|
| +g(C c) {
|
| + var h = c.f/*<int>*/;
|
| + print(h('s'));
|
| +}
|
| +''');
|
| + computeLibrarySourceErrors(source);
|
| + assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
|
| + verify([source]);
|
| + }
|
| +
|
| void fail_undefinedGetter() {
|
| Source source = addSource(r'''
|
| ''');
|
| @@ -964,6 +981,20 @@ class A {
|
| verify([source]);
|
| }
|
|
|
| + void test_concreteClassWithAbstractMember_noSuchMethod_interface() {
|
| + Source source = addSource(r'''
|
| +class I {
|
| + noSuchMethod(v) => '';
|
| +}
|
| +class A implements I {
|
| + m();
|
| +}''');
|
| + computeLibrarySourceErrors(source);
|
| + assertErrors(
|
| + source, [StaticWarningCode.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER]);
|
| + verify([source]);
|
| + }
|
| +
|
| void test_conflictingDartImport() {
|
| Source source = addSource(r'''
|
| import 'lib.dart';
|
| @@ -979,7 +1010,8 @@ class Future {}''');
|
| assertErrors(source, [StaticWarningCode.CONFLICTING_DART_IMPORT]);
|
| }
|
|
|
| - void test_conflictingInstanceGetterAndSuperclassMember_declField_direct_setter() {
|
| + void
|
| + test_conflictingInstanceGetterAndSuperclassMember_declField_direct_setter() {
|
| Source source = addSource(r'''
|
| class A {
|
| static set v(x) {}
|
| @@ -993,7 +1025,8 @@ class B extends A {
|
| verify([source]);
|
| }
|
|
|
| - void test_conflictingInstanceGetterAndSuperclassMember_declGetter_direct_getter() {
|
| + void
|
| + test_conflictingInstanceGetterAndSuperclassMember_declGetter_direct_getter() {
|
| Source source = addSource(r'''
|
| class A {
|
| static get v => 0;
|
| @@ -1007,7 +1040,8 @@ class B extends A {
|
| verify([source]);
|
| }
|
|
|
| - void test_conflictingInstanceGetterAndSuperclassMember_declGetter_direct_method() {
|
| + void
|
| + test_conflictingInstanceGetterAndSuperclassMember_declGetter_direct_method() {
|
| Source source = addSource(r'''
|
| class A {
|
| static v() {}
|
| @@ -1021,7 +1055,8 @@ class B extends A {
|
| verify([source]);
|
| }
|
|
|
| - void test_conflictingInstanceGetterAndSuperclassMember_declGetter_direct_setter() {
|
| + void
|
| + test_conflictingInstanceGetterAndSuperclassMember_declGetter_direct_setter() {
|
| Source source = addSource(r'''
|
| class A {
|
| static set v(x) {}
|
| @@ -2305,6 +2340,24 @@ set g(String v) {}''');
|
| verify([source]);
|
| }
|
|
|
| + void test_missingEnumConstantInSwitch() {
|
| + Source source = addSource(r'''
|
| +enum E { ONE, TWO, THREE, FOUR }
|
| +bool odd(E e) {
|
| + switch (e) {
|
| + case E.ONE:
|
| + case E.THREE: return true;
|
| + }
|
| + return false;
|
| +}''');
|
| + computeLibrarySourceErrors(source);
|
| + assertErrors(source, [
|
| + StaticWarningCode.MISSING_ENUM_CONSTANT_IN_SWITCH,
|
| + StaticWarningCode.MISSING_ENUM_CONSTANT_IN_SWITCH
|
| + ]);
|
| + verify([source]);
|
| + }
|
| +
|
| void test_mixedReturnTypes_localFunction() {
|
| Source source = addSource(r'''
|
| class C {
|
| @@ -2491,7 +2544,8 @@ class C extends A {
|
| verify([source]);
|
| }
|
|
|
| - void test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_interface() {
|
| + void
|
| + test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_interface() {
|
| // 15979
|
| Source source = addSource(r'''
|
| abstract class M {}
|
| @@ -2520,7 +2574,8 @@ class B = A with M;''');
|
| verify([source]);
|
| }
|
|
|
| - void test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_superclass() {
|
| + void
|
| + test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_superclass() {
|
| // 15979
|
| Source source = addSource(r'''
|
| class M {}
|
| @@ -2534,7 +2589,8 @@ class B = A with M;''');
|
| verify([source]);
|
| }
|
|
|
| - void test_nonAbstractClassInheritsAbstractMemberOne_ensureCorrectFunctionSubtypeIsUsedInImplementation() {
|
| + void
|
| + test_nonAbstractClassInheritsAbstractMemberOne_ensureCorrectFunctionSubtypeIsUsedInImplementation() {
|
| // 15028
|
| Source source = addSource(r'''
|
| class C {
|
| @@ -2602,7 +2658,8 @@ class C extends A {
|
| verify([source]);
|
| }
|
|
|
| - void test_nonAbstractClassInheritsAbstractMemberOne_method_optionalParamCount() {
|
| + void
|
| + test_nonAbstractClassInheritsAbstractMemberOne_method_optionalParamCount() {
|
| // 7640
|
| Source source = addSource(r'''
|
| abstract class A {
|
| @@ -2652,7 +2709,25 @@ class C extends Object with B {}''');
|
| [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
|
| }
|
|
|
| - void test_nonAbstractClassInheritsAbstractMemberOne_setter_and_implicitSetter() {
|
| + void test_nonAbstractClassInheritsAbstractMemberOne_noSuchMethod_interface() {
|
| + // 15979
|
| + Source source = addSource(r'''
|
| +class I {
|
| + noSuchMethod(v) => '';
|
| +}
|
| +abstract class A {
|
| + m();
|
| +}
|
| +class B extends A implements I {
|
| +}''');
|
| + computeLibrarySourceErrors(source);
|
| + assertErrors(source,
|
| + [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
|
| + verify([source]);
|
| + }
|
| +
|
| + void
|
| + test_nonAbstractClassInheritsAbstractMemberOne_setter_and_implicitSetter() {
|
| // test from language/override_inheritance_abstract_test_14.dart
|
| Source source = addSource(r'''
|
| abstract class A {
|
| @@ -2713,7 +2788,8 @@ class C extends B {
|
| verify([source]);
|
| }
|
|
|
| - void test_nonAbstractClassInheritsAbstractMemberOne_variable_fromInterface_missingGetter() {
|
| + void
|
| + test_nonAbstractClassInheritsAbstractMemberOne_variable_fromInterface_missingGetter() {
|
| // 16133
|
| Source source = addSource(r'''
|
| class I {
|
| @@ -2728,7 +2804,8 @@ class C implements I {
|
| verify([source]);
|
| }
|
|
|
| - void test_nonAbstractClassInheritsAbstractMemberOne_variable_fromInterface_missingSetter() {
|
| + void
|
| + test_nonAbstractClassInheritsAbstractMemberOne_variable_fromInterface_missingSetter() {
|
| // 16133
|
| Source source = addSource(r'''
|
| class I {
|
| @@ -2772,7 +2849,8 @@ class C extends A {
|
| verify([source]);
|
| }
|
|
|
| - void test_nonAbstractClassInheritsAbstractMemberTwo_variable_fromInterface_missingBoth() {
|
| + void
|
| + test_nonAbstractClassInheritsAbstractMemberTwo_variable_fromInterface_missingBoth() {
|
| // 16133
|
| Source source = addSource(r'''
|
| class I {
|
| @@ -2786,6 +2864,23 @@ class C implements I {
|
| verify([source]);
|
| }
|
|
|
| + void
|
| + test_nonAbstractClassInheritsAbstractMemberTwo_variable_fromMixin_missingBoth() {
|
| + // 26411
|
| + resetWithOptions(new AnalysisOptionsImpl()..enableSuperMixins = true);
|
| + Source source = addSource(r'''
|
| +class A {
|
| + int f;
|
| +}
|
| +class B extends A {}
|
| +class C extends Object with B {}
|
| +''');
|
| + computeLibrarySourceErrors(source);
|
| + assertErrors(source,
|
| + [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO]);
|
| + verify([source]);
|
| + }
|
| +
|
| void test_nonTypeInCatchClause_noElement() {
|
| Source source = addSource(r'''
|
| f() {
|
| @@ -3158,7 +3253,8 @@ a.A f() { return null; }'''
|
| ]);
|
| }
|
|
|
| - void test_typeAnnotationDeferredClass_functionTypedFormalParameter_returnType() {
|
| + void
|
| + test_typeAnnotationDeferredClass_functionTypedFormalParameter_returnType() {
|
| resolveWithErrors(<String>[
|
| r'''
|
| library lib1;
|
| @@ -3493,6 +3589,12 @@ class B extends A {
|
| assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]);
|
| }
|
|
|
| + void test_undefinedIdentifierAwait_function() {
|
| + Source source = addSource("void a() { await; }");
|
| + computeLibrarySourceErrors(source);
|
| + assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER_AWAIT]);
|
| + }
|
| +
|
| void test_undefinedNamedParameter() {
|
| Source source = addSource(r'''
|
| f({a, b}) {}
|
|
|