Skip to content

Commit 0b210e5

Browse files
srawlinscommit-bot@chromium.org
authored andcommitted
strict inference should not complain about top-level setter return types
Fixes #39250 Change-Id: I9f9ddc7ce484cc4ee0e9bbf2a7b2c673f6ad4e7e Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/124520 Commit-Queue: Samuel Rawlins <srawlins@google.com> Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
1 parent ab7bceb commit 0b210e5

File tree

2 files changed

+8
-2
lines changed

2 files changed

+8
-2
lines changed

pkg/analyzer/lib/src/generated/resolver.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -365,7 +365,7 @@ class BestPracticesVerifier extends RecursiveAstVisitor<void> {
365365
node.returnType, node.functionExpression.body, element, node);
366366

367367
// Return types are inferred only on non-recursive local functions.
368-
if (node.parent is CompilationUnit) {
368+
if (node.parent is CompilationUnit && !node.isSetter) {
369369
_checkStrictInferenceReturnType(node.returnType, node, node.name.name);
370370
}
371371
_checkStrictInferenceInParameters(node.functionExpression.parameters);
@@ -499,7 +499,7 @@ class BestPracticesVerifier extends RecursiveAstVisitor<void> {
499499
_checkForMissingReturn(node.returnType, node.body, element, node);
500500
_checkForUnnecessaryNoSuchMethod(node);
501501

502-
if (_strictInference && !node.isSetter && !elementIsOverride()) {
502+
if (!node.isSetter && !elementIsOverride()) {
503503
_checkStrictInferenceReturnType(node.returnType, node, node.name.name);
504504
}
505505
_checkStrictInferenceInParameters(node.parameters);

pkg/analyzer/test/src/diagnostics/inference_failure_on_function_return_type_test.dart

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,12 @@ mixin C {
190190
''', [error(HintCode.INFERENCE_FAILURE_ON_FUNCTION_RETURN_TYPE, 12, 9)]);
191191
}
192192

193+
test_setter_topLevel() async {
194+
await assertNoErrorsInCode(r'''
195+
set f(int x) => print(x);
196+
''');
197+
}
198+
193199
test_topLevelArrowFunction() async {
194200
await assertErrorsInCode(r'''
195201
f() => 7;

0 commit comments

Comments
 (0)