[wildcards] test wildcard params in overrides
See: https://github.com/dart-lang/sdk/issues/55680
Change-Id: I7893a5e9b2ff91d50eb1a997206f958705f81e14
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/375721
Commit-Queue: Phil Quitslund <pquitslund@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/analyzer/doc/process/new_language_feature.md b/pkg/analyzer/doc/process/new_language_feature.md
index f07b0fa..0332c50 100644
--- a/pkg/analyzer/doc/process/new_language_feature.md
+++ b/pkg/analyzer/doc/process/new_language_feature.md
@@ -45,7 +45,7 @@
- [ ] Constant evaluation
- [ ] Index and search
- [ ] Warnings (annotation-based, unused\*, strict-mode-based, a few others)
- - [ ] `InheritanceOverrideVerifier` (report errors and warnings related to overrides)
+ - [ ] `OverrideVerifier` and `InheritanceOverrideVerifier` (report errors and warnings related to overrides)
- [ ] `ErrorVerifier` (report other errors and warnings)
- [ ] `FfiVerifier` (report errors and warnings related to FFI)
- [ ] Unused elements warnings
diff --git a/pkg/analyzer/lib/src/error/inheritance_override.dart b/pkg/analyzer/lib/src/error/inheritance_override.dart
index c5ca938..251c348 100644
--- a/pkg/analyzer/lib/src/error/inheritance_override.dart
+++ b/pkg/analyzer/lib/src/error/inheritance_override.dart
@@ -850,8 +850,8 @@
if (conflict is GetterMethodConflict) {
// Members that participate in inheritance are always enclosed in named
// elements so it is safe to assume that
- // `conflict.getter.enclosingElement3.name` and
- // `conflict.method.enclosingElement3.name` are both non-`null`.
+ // `conflict.getter.enclosingElement.name` and
+ // `conflict.method.enclosingElement.name` are both non-`null`.
reporter.atToken(
token,
CompileTimeErrorCode.INCONSISTENT_INHERITANCE_GETTER_AND_METHOD,
diff --git a/pkg/analyzer/test/src/diagnostics/missing_override_of_must_be_overridden_test.dart b/pkg/analyzer/test/src/diagnostics/missing_override_of_must_be_overridden_test.dart
index de148c1..7fce416 100644
--- a/pkg/analyzer/test/src/diagnostics/missing_override_of_must_be_overridden_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/missing_override_of_must_be_overridden_test.dart
@@ -369,6 +369,41 @@
''');
}
+ test_method_overriddenWithMethod_wildcardParams() async {
+ await assertNoErrorsInCode('''
+import 'package:meta/meta.dart';
+
+class C {
+ @mustBeOverridden
+ void m(int x) {}
+}
+
+class A extends C {
+ @override
+ void m(int _) {}
+}
+''');
+ }
+
+ test_method_overriddenWithMethod_wildcardParams_preWildcards() async {
+ await assertNoErrorsInCode('''
+// @dart = 3.4
+// (pre wildcard-variables)
+
+import 'package:meta/meta.dart';
+
+class C {
+ @mustBeOverridden
+ void m(int x) {}
+}
+
+class A extends C {
+ @override
+ void m(int _) {}
+}
+''');
+ }
+
test_method_sealedClassIsImplicitlyAbstract() async {
await assertNoErrorsInCode('''
import 'package:meta/meta.dart';
diff --git a/pkg/analyzer/test/src/diagnostics/override_on_non_overriding_method_test.dart b/pkg/analyzer/test/src/diagnostics/override_on_non_overriding_method_test.dart
index 9b764a6..63f6cd9 100644
--- a/pkg/analyzer/test/src/diagnostics/override_on_non_overriding_method_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/override_on_non_overriding_method_test.dart
@@ -52,6 +52,33 @@
}''');
}
+ test_class_extends_wildcardParams() async {
+ await assertNoErrorsInCode(r'''
+class A {
+ void foo(int x) {}
+}
+
+class B extends A {
+ @override
+ void foo(int _) {}
+}''');
+ }
+
+ test_class_extends_wildcardParams_preWildCards() async {
+ await assertNoErrorsInCode(r'''
+// @dart = 3.4
+// (pre wildcard-variables)
+
+class A {
+ void foo(int x) {}
+}
+
+class B extends A {
+ @override
+ void foo(int _) {}
+}''');
+ }
+
test_class_implements() async {
await assertNoErrorsInCode(r'''
class A {