Skip to content

Commit 734e9c3

Browse files
srawlinsCommit Queue
authored and
Commit Queue
committed
analyzer: Report configurations in doc imports
Work towards #50702 Change-Id: If9c3d702f16e609e0d1f2c2bf09ec02a73cd5a54 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/323427 Commit-Queue: Samuel Rawlins <[email protected]> Reviewed-by: Brian Wilkerson <[email protected]>
1 parent bbc3dcb commit 734e9c3

File tree

7 files changed

+62
-4
lines changed

7 files changed

+62
-4
lines changed

Diff for: pkg/analysis_server/lib/src/services/correction/error_fix_status.yaml

+2
Original file line numberDiff line numberDiff line change
@@ -3428,6 +3428,8 @@ WarningCode.DEPRECATED_NEW_IN_COMMENT_REFERENCE:
34283428
status: hasFix
34293429
WarningCode.DOC_IMPORT_CANNOT_BE_DEFERRED:
34303430
status: needsFix
3431+
WarningCode.DOC_IMPORT_CANNOT_HAVE_CONFIGURATIONS:
3432+
status: needsFix
34313433
WarningCode.DUPLICATE_EXPORT:
34323434
status: needsFix
34333435
notes: |-

Diff for: pkg/analyzer/lib/src/error/codes.g.dart

+7
Original file line numberDiff line numberDiff line change
@@ -6049,6 +6049,13 @@ class WarningCode extends AnalyzerErrorCode {
60496049
static const WarningCode DOC_IMPORT_CANNOT_BE_DEFERRED = WarningCode(
60506050
'DOC_IMPORT_CANNOT_BE_DEFERRED',
60516051
"Doc imports can't be deferred.",
6052+
correctionMessage: "Try removing the 'deferred' keyword.",
6053+
);
6054+
6055+
static const WarningCode DOC_IMPORT_CANNOT_HAVE_CONFIGURATIONS = WarningCode(
6056+
'DOC_IMPORT_CANNOT_HAVE_CONFIGURATIONS',
6057+
"Doc imports can't have configurations.",
6058+
correctionMessage: "Try removing the configurations.",
60526059
);
60536060

60546061
/// Duplicate exports.

Diff for: pkg/analyzer/lib/src/error/doc_import_verifier.dart

+8-1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,13 @@ class DocImportVerifier {
2020
deferredKeyword,
2121
);
2222
}
23-
// TODO(srawlins): Report warnings for configurations.
23+
var configurations = node.import.configurations;
24+
if (configurations.isNotEmpty) {
25+
_errorReporter.reportErrorForOffset(
26+
WarningCode.DOC_IMPORT_CANNOT_HAVE_CONFIGURATIONS,
27+
configurations.first.offset,
28+
configurations.last.end,
29+
);
30+
}
2431
}
2532
}

Diff for: pkg/analyzer/lib/src/error/error_code_values.g.dart

+1
Original file line numberDiff line numberDiff line change
@@ -944,6 +944,7 @@ const List<ErrorCode> errorCodeValues = [
944944
WarningCode.DEPRECATED_MIXIN_FUNCTION,
945945
WarningCode.DEPRECATED_NEW_IN_COMMENT_REFERENCE,
946946
WarningCode.DOC_IMPORT_CANNOT_BE_DEFERRED,
947+
WarningCode.DOC_IMPORT_CANNOT_HAVE_CONFIGURATIONS,
947948
WarningCode.DUPLICATE_EXPORT,
948949
WarningCode.DUPLICATE_HIDDEN_NAME,
949950
WarningCode.DUPLICATE_IGNORE,

Diff for: pkg/analyzer/messages.yaml

+8-3
Original file line numberDiff line numberDiff line change
@@ -21545,9 +21545,6 @@ StaticWarningCode:
2154521545
}
2154621546
```
2154721547
WarningCode:
21548-
DOC_IMPORT_CANNOT_BE_DEFERRED:
21549-
problemMessage: "Doc imports can't be deferred."
21550-
hasPublishedDocs: false
2155121548
ARGUMENT_TYPE_NOT_ASSIGNABLE_TO_ERROR_HANDLER:
2155221549
problemMessage: "The argument type '{0}' can't be assigned to the parameter type '{1} Function(Object)' or '{1} Function(Object, StackTrace)'."
2155321550
hasPublishedDocs: true
@@ -22125,6 +22122,14 @@ WarningCode:
2212522122
C.c();
2212622123
}
2212722124
```
22125+
DOC_IMPORT_CANNOT_BE_DEFERRED:
22126+
problemMessage: "Doc imports can't be deferred."
22127+
correctionMessage: Try removing the 'deferred' keyword.
22128+
hasPublishedDocs: false
22129+
DOC_IMPORT_CANNOT_HAVE_CONFIGURATIONS:
22130+
problemMessage: "Doc imports can't have configurations."
22131+
correctionMessage: Try removing the configurations.
22132+
hasPublishedDocs: false
2212822133
DUPLICATE_EXPORT:
2212922134
problemMessage: Duplicate export.
2213022135
correctionMessage: Try removing all but one export of the library.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file
2+
// for details. All rights reserved. Use of this source code is governed by a
3+
// BSD-style license that can be found in the LICENSE file.
4+
5+
import 'package:analyzer/src/error/codes.g.dart';
6+
import 'package:test_reflective_loader/test_reflective_loader.dart';
7+
8+
import '../dart/resolution/context_collection_resolution.dart';
9+
10+
void main() {
11+
defineReflectiveSuite(() {
12+
defineReflectiveTests(DocImportCannotHaveConfigurationsTest);
13+
});
14+
}
15+
16+
@reflectiveTest
17+
class DocImportCannotHaveConfigurationsTest extends PubPackageResolutionTest {
18+
test_configurations() async {
19+
await assertErrorsInCode('''
20+
/// @docImport 'dart:math' if (dart.library.html) 'dart:html';
21+
class C {}
22+
''', [
23+
error(WarningCode.DOC_IMPORT_CANNOT_HAVE_CONFIGURATIONS, 27, 61),
24+
]);
25+
}
26+
27+
test_noConfigurations() async {
28+
await assertNoErrorsInCode('''
29+
/// @docImport 'dart:math';
30+
class C {}
31+
''');
32+
}
33+
}

Diff for: pkg/analyzer/test/src/diagnostics/test_all.dart

+3
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,8 @@ import 'deprecated_mixin_function_test.dart' as deprecated_mixin_function;
169169
import 'division_optimization_test.dart' as division_optimization;
170170
import 'doc_import_cannot_be_deferred_test.dart'
171171
as doc_import_cannot_be_deferred;
172+
import 'doc_import_cannot_have_configurations_test.dart'
173+
as doc_import_cannot_have_configurations;
172174
import 'duplicate_augmentation_import_test.dart'
173175
as duplicate_augmentation_import;
174176
import 'duplicate_constructor_default_test.dart'
@@ -1015,6 +1017,7 @@ main() {
10151017
deprecated_mixin_function.main();
10161018
division_optimization.main();
10171019
doc_import_cannot_be_deferred.main();
1020+
doc_import_cannot_have_configurations.main();
10181021
duplicate_augmentation_import.main();
10191022
duplicate_constructor_default.main();
10201023
duplicate_constructor_name.main();

0 commit comments

Comments
 (0)