mirror of
https://github.com/dart-lang/sdk
synced 2024-10-14 12:30:03 +00:00
validate @visibleForOverriding
extension type targets
See: https://github.com/dart-lang/sdk/issues/53434 Change-Id: I931a7cdff990ca19f6ec3267340031ca5fa7b814 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/325322 Commit-Queue: Phil Quitslund <pquitslund@google.com> Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
This commit is contained in:
parent
d5555377ed
commit
2f90ee8cf1
|
@ -414,7 +414,8 @@ class AnnotationVerifier {
|
|||
} else if (parent.declaredElement != null) {
|
||||
final declaredElement = parent.declaredElement!;
|
||||
if (element.isVisibleForOverriding &&
|
||||
!declaredElement.isInstanceMember) {
|
||||
!declaredElement.isInstanceMember ||
|
||||
declaredElement.enclosingElement is ExtensionTypeElement) {
|
||||
reportInvalidVisibleForOverriding();
|
||||
}
|
||||
|
||||
|
|
|
@ -62,6 +62,25 @@ extension E on String {
|
|||
]);
|
||||
}
|
||||
|
||||
test_invalid_extensionType() async {
|
||||
await assertErrorsInCode('''
|
||||
import 'package:meta/meta.dart';
|
||||
@visibleForOverriding
|
||||
extension type E(int i) {}
|
||||
''', [error(WarningCode.INVALID_VISIBLE_FOR_OVERRIDING_ANNOTATION, 33, 21)]);
|
||||
}
|
||||
|
||||
test_invalid_extensionType_member() async {
|
||||
await assertErrorsInCode('''
|
||||
import 'package:meta/meta.dart';
|
||||
|
||||
extension type E(int i) {
|
||||
@visibleForOverriding
|
||||
void f() { }
|
||||
}
|
||||
''', [error(WarningCode.INVALID_VISIBLE_FOR_OVERRIDING_ANNOTATION, 63, 21)]);
|
||||
}
|
||||
|
||||
test_invalid_staticMember() async {
|
||||
await assertErrorsInCode(r'''
|
||||
import 'package:meta/meta.dart';
|
||||
|
|
Loading…
Reference in a new issue