Skip to content

Commit 92a6a2c

Browse files
pqCommit Queue
authored andcommitted
[PE] [linter] refine strict_top_level_inference reflective test detection
Change-Id: Ifac4d96e0d1340c31cf965c8076ed0acae018d53 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/412460 Commit-Queue: Brian Wilkerson <[email protected]> Reviewed-by: Brian Wilkerson <[email protected]> Auto-Submit: Phil Quitslund <[email protected]>
1 parent 3a9befe commit 92a6a2c

File tree

2 files changed

+47
-14
lines changed

2 files changed

+47
-14
lines changed

pkg/linter/lib/src/rules/strict_top_level_inference.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,9 @@ class _Visitor extends SimpleAstVisitor<void> {
214214
);
215215
if (overriddenMember == null &&
216216
node.returnType == null &&
217-
!container.isReflectiveTest) {
217+
(!container.isReflectiveTest ||
218+
(!node.name.lexeme.startsWith('test_') &&
219+
!node.name.lexeme.startsWith('solo_test_')))) {
218220
_report(node.name);
219221
}
220222
if (node.parameters case var parameters?) {

pkg/linter/test/rules/strict_top_level_inference_test.dart

Lines changed: 44 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,25 @@ class StrictTopLevelInferenceTest extends LintRuleTest {
2424
@override
2525
String get lintRule => LintNames.strict_top_level_inference;
2626

27+
void addReflectiveTestLoaderDep() {
28+
// TODO(pq): share setup logic with unreachable_from_main_test
29+
var testReflectiveLoaderPath = '$workspaceRootPath/test_reflective_loader';
30+
var packageConfigBuilder = PackageConfigFileBuilder();
31+
packageConfigBuilder.add(
32+
name: 'test_reflective_loader',
33+
rootPath: testReflectiveLoaderPath,
34+
);
35+
writeTestPackageConfig(packageConfigBuilder);
36+
newFile('$testReflectiveLoaderPath/lib/test_reflective_loader.dart', r'''
37+
library test_reflective_loader;
38+
39+
const Object reflectiveTest = _ReflectiveTest();
40+
class _ReflectiveTest {
41+
const _ReflectiveTest();
42+
}
43+
''');
44+
}
45+
2746
test_constructorParameter_named() async {
2847
await assertDiagnostics(
2948
r'''
@@ -683,23 +702,35 @@ void f() {
683702
''');
684703
}
685704

686-
test_reflectiveTest() async {
687-
// TODO(pq): share setup logic with unreachable_from_main_test
688-
var testReflectiveLoaderPath = '$workspaceRootPath/test_reflective_loader';
689-
var packageConfigBuilder = PackageConfigFileBuilder();
690-
packageConfigBuilder.add(
691-
name: 'test_reflective_loader',
692-
rootPath: testReflectiveLoaderPath,
705+
test_reflectiveTest_nonTest() async {
706+
addReflectiveTestLoaderDep();
707+
await assertDiagnostics(
708+
r'''
709+
import 'package:test_reflective_loader/test_reflective_loader.dart';
710+
711+
@reflectiveTest
712+
class ReflectiveTest {
713+
foo() {}
714+
}
715+
''',
716+
[lint(111, 3)],
693717
);
694-
writeTestPackageConfig(packageConfigBuilder);
695-
newFile('$testReflectiveLoaderPath/lib/test_reflective_loader.dart', r'''
696-
library test_reflective_loader;
718+
}
697719

698-
const Object reflectiveTest = _ReflectiveTest();
699-
class _ReflectiveTest {
700-
const _ReflectiveTest();
720+
test_reflectiveTest_soloTest() async {
721+
addReflectiveTestLoaderDep();
722+
await assertNoDiagnostics(r'''
723+
import 'package:test_reflective_loader/test_reflective_loader.dart';
724+
725+
@reflectiveTest
726+
class ReflectiveTest {
727+
solo_test_foo() {}
701728
}
702729
''');
730+
}
731+
732+
test_reflectiveTest_test() async {
733+
addReflectiveTestLoaderDep();
703734
await assertNoDiagnostics(r'''
704735
import 'package:test_reflective_loader/test_reflective_loader.dart';
705736

0 commit comments

Comments
 (0)