Skip to content

Commit 6905e57

Browse files
scheglovcommit-bot@chromium.org
authored andcommitted
Issue 35223. Skip setters that don't have exactly one parameter.
We have already reported a more serious problem about such setters. [email protected] Bug: #35223 Change-Id: I10250be15897d55d29004655127f56ddf77be4aa Reviewed-on: https://dart-review.googlesource.com/c/86080 Reviewed-by: Brian Wilkerson <[email protected]> Commit-Queue: Konstantin Shcheglov <[email protected]>
1 parent 352cff2 commit 6905e57

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

pkg/analyzer/lib/src/error/inheritance_override.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -366,7 +366,7 @@ class _ClassVerifier {
366366
if (getter.element.kind == ElementKind.GETTER) {
367367
// TODO(scheglov) We should separate getters and setters.
368368
var setter = interface.map[new Name(libraryUri, '${name.name}=')];
369-
if (setter != null) {
369+
if (setter != null && setter.parameters.length == 1) {
370370
var getterType = getter.returnType;
371371
var setterType = setter.parameters[0].type;
372372
if (!typeSystem.isAssignableTo(getterType, setterType)) {

pkg/analyzer/test/src/dart/resolution/class_test.dart

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1301,6 +1301,32 @@ class B extends A {
13011301
assertNoTestErrors();
13021302
}
13031303

1304+
test_error_mismatchedGetterAndSetterTypes_OK_setterParameter_0() async {
1305+
addTestFile(r'''
1306+
class C {
1307+
int get foo => 0;
1308+
set foo() {}
1309+
}
1310+
''');
1311+
await resolveTestFile();
1312+
assertTestErrors([
1313+
CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER,
1314+
]);
1315+
}
1316+
1317+
test_error_mismatchedGetterAndSetterTypes_OK_setterParameter_2() async {
1318+
addTestFile(r'''
1319+
class C {
1320+
int get foo => 0;
1321+
set foo(String p1, String p2) {}
1322+
}
1323+
''');
1324+
await resolveTestFile();
1325+
assertTestErrors([
1326+
CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER,
1327+
]);
1328+
}
1329+
13041330
test_error_mismatchedGetterAndSetterTypes_superGetter() async {
13051331
addTestFile(r'''
13061332
class A {

0 commit comments

Comments
 (0)